From 743ee7061e7473b016a4e160e524cc91b0c4f6eb Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Tue, 3 Dec 2013 15:20:27 +0000 Subject: [PATCH] Changed behaviour of DefineConstant & co for better symmetry between GetDP/Gmsh and Python onelab clients. WARNING WARNING WARNING: This is a major change -- all our onelab-enabled .geo and .pro files will need to be (slightly...) modified. What's new: 1. The name of a onelab variable (in the onelab database) is no more constructed from the name of the corresponding GetDP/Gmsh variable. One now needs to specify the onelab name explicitely, using the "Name" attribute. The "Name" is the actual name of the parameter in the onelab database, i.e., it also includes the path. This makes the "Path" attribute obsolete (it has no effect anymore). The "Legend" attribute can still be used (and it can be useful in edge cases, e.g. when you want a "/" in the name of a onelab paramater), but in most cases it's not necessary. 2. When a DefineConstant[] & co is used and no Name is given (e.g. DefineConstant[a=2]), no onelab parameter is created. This allows to provide default values to internal parameters without polluting the database. Why did we change? 1. The new syntax matches what we do in Python, where specifying a name is mandatory (there's no way around this in Python, as onelab cannot guess the name of a Python variable to which a onelab parameter value will be assigned). The change will prevent common mistakes where two parameters with the same label actually correspond to 2 different onelab parameters, due to a change in local getdp/gmsh variable name (which would change the onelab name automatically) 2. The new syntax allows to nicely decouple onelab parameters from internal variables with default values, that we don't want in the onelab database. --- Common/GmshMessage.cpp | 24 +- Fltk/onelabGroup.cpp | 3 +- Parser/Gmsh.tab.cpp | 4386 +++++++++-------- Parser/Gmsh.y | 15 +- .../Onelab/files/magnet/Magnetostatics.pro | 34 +- .../mobile/iOS/Onelab/files/magnet/magnet.geo | 15 +- .../mobile/iOS/Onelab/files/magnet/magnet.pro | 12 +- .../iOS/Onelab/files/magnet/magnet_data.pro | 6 +- contrib/mobile/iOS/Onelab/files/pmsm/BH.pro | 72 +- .../Onelab/files/pmsm/machine_magstadyn_a.pro | 1043 ++-- contrib/mobile/iOS/Onelab/files/pmsm/pmsm.geo | 17 +- contrib/mobile/iOS/Onelab/files/pmsm/pmsm.pro | 126 +- .../iOS/Onelab/files/pmsm/pmsm_8p_circuit.pro | 9 +- .../iOS/Onelab/files/pmsm/pmsm_data.geo | 60 +- .../iOS/Onelab/files/pmsm/pmsm_rotor.geo | 19 +- .../iOS/Onelab/files/pmsm/pmsm_stator.geo | 8 +- contrib/onelab/python/coin.geo | 5 +- demos/indheat.geo | 22 +- tutorial/t3.geo | 2 +- utils/api_demos/simpleBeam.geo | 12 +- 20 files changed, 3049 insertions(+), 2841 deletions(-) diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp index 4c325cfd18..0ae62c48ae 100644 --- a/Common/GmshMessage.cpp +++ b/Common/GmshMessage.cpp @@ -880,7 +880,17 @@ void Msg::ExchangeOnelabParameter(const std::string &key, #if defined(HAVE_ONELAB) if(!_onelabClient || val.empty()) return; - std::string name = _getParameterName(key, copt); + std::string name; + if(copt.count("Name")) + name = copt["Name"][0]; + + if(name.empty()){ + if(copt.size() || fopt.size()) + Msg::Error("From now on you need to use the `Name' attribute to create a " + "Onelab parameter: `Name \"%s\"'", + _getParameterName(key, copt).c_str()); + return; + } std::vector<onelab::number> ps; _onelabClient->get(ps, name); @@ -975,7 +985,17 @@ void Msg::ExchangeOnelabParameter(const std::string &key, #if defined(HAVE_ONELAB) if(!_onelabClient || val.empty()) return; - std::string name = _getParameterName(key, copt); + std::string name; + if(copt.count("Name")) + name = copt["Name"][0]; + + if(name.empty()){ + if(copt.size() || fopt.size()) + Msg::Error("From now on you need to use the `Name' attribute to create a " + "Onelab parameter: `Name \"%s\"'", + _getParameterName(key, copt).c_str()); + return; + } std::vector<onelab::string> ps; _onelabClient->get(ps, name); diff --git a/Fltk/onelabGroup.cpp b/Fltk/onelabGroup.cpp index c2f7cbd50c..83fcb8f2c4 100644 --- a/Fltk/onelabGroup.cpp +++ b/Fltk/onelabGroup.cpp @@ -1706,8 +1706,9 @@ void onelabGroup::rebuildTree(bool deleteWidgets) } } - for(std::set<std::string>::iterator it = closed.begin(); it != closed.end(); it++) + for(std::set<std::string>::iterator it = closed.begin(); it != closed.end(); it++){ if(it->size()) _tree->close(it->c_str(), 0); + } _tree->redraw(); diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index af12a30c1a..a9b472c69c 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -748,16 +748,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 8862 +#define YYLAST 8880 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 180 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 93 /* YYNRULES -- Number of rules. */ -#define YYNRULES 474 +#define YYNRULES 475 /* YYNRULES -- Number of states. */ -#define YYNSTATES 1649 +#define YYNSTATES 1654 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -864,8 +864,8 @@ static const yytype_uint16 yyprhs[] = 2461, 2467, 2473, 2475, 2477, 2481, 2485, 2490, 2497, 2504, 2506, 2508, 2512, 2516, 2526, 2534, 2536, 2542, 2546, 2553, 2555, 2559, 2561, 2563, 2567, 2574, 2576, 2578, 2583, 2590, - 2597, 2602, 2607, 2616, 2621, 2626, 2631, 2636, 2643, 2650, - 2652, 2656, 2662, 2668, 2670 + 2597, 2604, 2609, 2614, 2623, 2628, 2633, 2638, 2643, 2650, + 2657, 2659, 2663, 2669, 2675, 2677 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -1130,15 +1130,15 @@ static const yytype_int16 yyrhs[] = -1, 272, -1, 4, 174, 4, -1, 4, 172, 256, 173, 174, 4, -1, 5, -1, 51, -1, 138, 170, 268, 171, -1, 139, 170, 268, 176, 268, 171, -1, - 41, 170, 268, 176, 268, 171, -1, 42, 170, 268, - 171, -1, 43, 170, 268, 171, -1, 44, 170, 268, - 176, 268, 176, 268, 171, -1, 39, 170, 270, 171, - -1, 39, 172, 270, 173, -1, 40, 170, 268, 171, - -1, 40, 172, 268, 173, -1, 40, 170, 268, 176, - 264, 171, -1, 40, 172, 268, 176, 264, 173, -1, - 268, -1, 270, 176, 268, -1, 4, 179, 177, 256, - 178, -1, 271, 179, 177, 256, 178, -1, 4, -1, - 271, -1 + 41, 170, 268, 176, 268, 171, -1, 41, 172, 268, + 176, 268, 173, -1, 42, 170, 268, 171, -1, 43, + 170, 268, 171, -1, 44, 170, 268, 176, 268, 176, + 268, 171, -1, 39, 170, 270, 171, -1, 39, 172, + 270, 173, -1, 40, 170, 268, 171, -1, 40, 172, + 268, 173, -1, 40, 170, 268, 176, 264, 171, -1, + 40, 172, 268, 176, 264, 173, -1, 268, -1, 270, + 176, 268, -1, 4, 179, 177, 256, 178, -1, 271, + 179, 177, 256, 178, -1, 4, -1, 271, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -1153,45 +1153,45 @@ static const yytype_uint16 yyrline[] = 623, 624, 625, 629, 630, 636, 638, 640, 702, 732, 767, 801, 849, 896, 911, 927, 936, 942, 951, 969, 987, 996, 1008, 1013, 1021, 1041, 1064, 1075, 1083, 1105, - 1128, 1154, 1175, 1187, 1201, 1201, 1203, 1205, 1216, 1228, - 1227, 1239, 1251, 1250, 1264, 1266, 1274, 1280, 1287, 1288, - 1292, 1303, 1318, 1328, 1329, 1334, 1342, 1351, 1369, 1373, - 1384, 1387, 1400, 1403, 1413, 1437, 1436, 1456, 1478, 1496, - 1517, 1535, 1565, 1595, 1613, 1631, 1657, 1675, 1694, 1693, - 1716, 1734, 1773, 1779, 1785, 1792, 1817, 1842, 1859, 1878, - 1913, 1912, 1936, 1954, 1971, 1988, 1987, 2013, 2018, 2023, - 2028, 2033, 2038, 2061, 2067, 2078, 2079, 2084, 2087, 2091, - 2114, 2137, 2160, 2188, 2209, 2235, 2256, 2278, 2298, 2410, - 2429, 2467, 2576, 2585, 2591, 2606, 2634, 2651, 2660, 2674, - 2680, 2686, 2695, 2704, 2713, 2727, 2772, 2789, 2804, 2823, - 2835, 2859, 2863, 2868, 2875, 2881, 2886, 2892, 2900, 2904, - 2908, 2913, 2968, 2981, 2998, 3015, 3036, 3057, 3092, 3100, - 3106, 3113, 3117, 3126, 3134, 3142, 3151, 3150, 3165, 3164, - 3179, 3178, 3193, 3192, 3206, 3213, 3220, 3227, 3234, 3241, - 3248, 3255, 3262, 3270, 3269, 3283, 3282, 3296, 3295, 3309, - 3308, 3322, 3321, 3335, 3334, 3348, 3347, 3361, 3360, 3374, - 3373, 3390, 3393, 3399, 3411, 3431, 3455, 3460, 3464, 3468, - 3472, 3476, 3480, 3484, 3488, 3492, 3496, 3515, 3528, 3531, - 3547, 3550, 3567, 3570, 3576, 3579, 3586, 3642, 3712, 3717, - 3784, 3820, 3828, 3871, 3910, 3930, 3957, 3997, 4020, 4043, - 4047, 4051, 4074, 4113, 4158, 4162, 4172, 4207, 4208, 4209, - 4213, 4219, 4231, 4249, 4277, 4278, 4279, 4280, 4281, 4282, - 4283, 4284, 4285, 4292, 4293, 4294, 4295, 4296, 4297, 4298, - 4299, 4300, 4301, 4302, 4303, 4304, 4305, 4306, 4307, 4308, - 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, - 4319, 4320, 4321, 4322, 4323, 4324, 4327, 4328, 4329, 4330, - 4331, 4332, 4333, 4334, 4335, 4336, 4337, 4338, 4339, 4340, - 4341, 4342, 4343, 4344, 4345, 4346, 4347, 4348, 4357, 4358, - 4359, 4360, 4361, 4362, 4363, 4364, 4365, 4369, 4387, 4405, - 4417, 4434, 4455, 4460, 4465, 4475, 4485, 4490, 4499, 4504, - 4531, 4535, 4539, 4543, 4547, 4554, 4558, 4562, 4566, 4573, - 4578, 4585, 4590, 4594, 4599, 4603, 4611, 4622, 4626, 4638, - 4646, 4654, 4661, 4671, 4691, 4695, 4699, 4703, 4707, 4736, - 4765, 4794, 4823, 4833, 4843, 4856, 4868, 4880, 4899, 4920, - 4925, 4929, 4933, 4945, 4949, 4961, 4968, 4978, 4982, 4997, - 5002, 5009, 5013, 5026, 5034, 5045, 5049, 5057, 5065, 5073, - 5081, 5095, 5109, 5121, 5138, 5154, 5159, 5163, 5183, 5205, - 5210, 5216, 5225, 5238, 5241 + 1128, 1154, 1175, 1187, 1201, 1201, 1203, 1205, 1214, 1224, + 1223, 1235, 1245, 1244, 1258, 1260, 1268, 1274, 1281, 1282, + 1286, 1297, 1312, 1322, 1323, 1328, 1336, 1345, 1363, 1367, + 1378, 1381, 1394, 1397, 1407, 1431, 1430, 1450, 1472, 1490, + 1511, 1529, 1559, 1589, 1607, 1625, 1651, 1669, 1688, 1687, + 1710, 1728, 1767, 1773, 1779, 1786, 1811, 1836, 1853, 1872, + 1907, 1906, 1930, 1948, 1965, 1982, 1981, 2007, 2012, 2017, + 2022, 2027, 2032, 2055, 2061, 2072, 2073, 2078, 2081, 2085, + 2108, 2131, 2154, 2182, 2203, 2229, 2250, 2272, 2292, 2404, + 2423, 2461, 2570, 2579, 2585, 2600, 2628, 2645, 2654, 2668, + 2674, 2680, 2689, 2698, 2707, 2721, 2766, 2783, 2798, 2817, + 2829, 2853, 2857, 2862, 2869, 2875, 2880, 2886, 2894, 2898, + 2902, 2907, 2962, 2975, 2992, 3009, 3030, 3051, 3086, 3094, + 3100, 3107, 3111, 3120, 3128, 3136, 3145, 3144, 3159, 3158, + 3173, 3172, 3187, 3186, 3200, 3207, 3214, 3221, 3228, 3235, + 3242, 3249, 3256, 3264, 3263, 3277, 3276, 3290, 3289, 3303, + 3302, 3316, 3315, 3329, 3328, 3342, 3341, 3355, 3354, 3368, + 3367, 3384, 3387, 3393, 3405, 3425, 3449, 3454, 3458, 3462, + 3466, 3470, 3474, 3478, 3482, 3486, 3490, 3509, 3522, 3525, + 3541, 3544, 3561, 3564, 3570, 3573, 3580, 3636, 3706, 3711, + 3778, 3814, 3822, 3865, 3904, 3924, 3951, 3991, 4014, 4037, + 4041, 4045, 4068, 4107, 4152, 4156, 4166, 4201, 4202, 4203, + 4207, 4213, 4225, 4243, 4271, 4272, 4273, 4274, 4275, 4276, + 4277, 4278, 4279, 4286, 4287, 4288, 4289, 4290, 4291, 4292, + 4293, 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301, 4302, + 4303, 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, + 4313, 4314, 4315, 4316, 4317, 4318, 4321, 4322, 4323, 4324, + 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, + 4335, 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4351, 4352, + 4353, 4354, 4355, 4356, 4357, 4358, 4359, 4363, 4381, 4399, + 4411, 4428, 4449, 4454, 4459, 4469, 4479, 4484, 4493, 4498, + 4525, 4529, 4533, 4537, 4541, 4548, 4552, 4556, 4560, 4567, + 4572, 4579, 4584, 4588, 4593, 4597, 4605, 4616, 4620, 4632, + 4640, 4648, 4655, 4665, 4685, 4689, 4693, 4697, 4701, 4730, + 4759, 4788, 4817, 4827, 4837, 4850, 4862, 4874, 4893, 4914, + 4919, 4923, 4927, 4939, 4943, 4955, 4962, 4972, 4976, 4991, + 4996, 5003, 5007, 5020, 5028, 5039, 5043, 5051, 5059, 5067, + 5076, 5084, 5098, 5112, 5124, 5141, 5157, 5162, 5166, 5186, + 5208, 5213, 5219, 5228, 5241, 5244 }; #endif @@ -1329,8 +1329,8 @@ static const yytype_uint16 yyr1[] = 263, 263, 263, 263, 263, 263, 263, 263, 263, 264, 264, 264, 264, 265, 265, 265, 265, 266, 266, 267, 267, 268, 268, 268, 268, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 270, - 270, 271, 271, 272, 272 + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 270, 270, 271, 271, 272, 272 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1382,8 +1382,8 @@ static const yytype_uint8 yyr2[] = 5, 5, 1, 1, 3, 3, 4, 6, 6, 1, 1, 3, 3, 9, 7, 1, 5, 3, 6, 1, 3, 1, 1, 3, 6, 1, 1, 4, 6, 6, - 4, 4, 8, 4, 4, 4, 4, 6, 6, 1, - 3, 5, 5, 1, 1 + 6, 4, 4, 8, 4, 4, 4, 4, 6, 6, + 1, 3, 5, 5, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1391,7 +1391,7 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 0, 0, 2, 3, 1, 473, 0, 0, 0, + 0, 0, 0, 2, 3, 1, 474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1400,8 +1400,8 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 217, 0, 222, 0, 0, 0, 219, 0, 0, 0, 0, 307, 308, 309, 0, 5, 7, 6, 8, 9, 10, 19, 11, - 12, 13, 18, 17, 14, 15, 16, 0, 20, 474, - 0, 378, 473, 455, 379, 380, 381, 0, 0, 0, + 12, 13, 18, 17, 14, 15, 16, 0, 20, 475, + 0, 378, 474, 455, 379, 380, 381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 456, 385, @@ -1415,11 +1415,11 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, 304, - 0, 0, 0, 0, 0, 0, 0, 0, 473, 418, + 0, 0, 0, 0, 0, 0, 0, 0, 474, 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 432, 433, 411, 417, 0, 412, 387, 0, 0, 0, 0, 445, 0, 0, 0, 0, 0, 201, 202, 0, 0, - 218, 0, 167, 0, 167, 473, 0, 310, 0, 0, + 218, 0, 167, 0, 167, 474, 0, 310, 0, 0, 0, 58, 62, 61, 60, 59, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1427,337 +1427,339 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 317, 316, 318, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 166, 0, 165, 0, 198, + 0, 0, 0, 317, 316, 318, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 166, 0, 165, 0, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 195, 390, 142, + 0, 474, 0, 451, 452, 0, 0, 94, 94, 0, + 0, 439, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 195, 390, 142, 0, - 473, 0, 451, 452, 0, 0, 94, 94, 0, 0, - 439, 440, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 282, 282, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 167, 0, + 402, 401, 0, 0, 0, 0, 167, 167, 0, 0, + 0, 0, 0, 0, 0, 232, 0, 167, 0, 0, + 0, 0, 0, 284, 0, 0, 0, 0, 185, 0, + 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 424, 0, 425, 426, 427, + 0, 0, 0, 0, 0, 316, 419, 0, 413, 0, + 0, 0, 290, 200, 0, 0, 0, 0, 0, 167, + 0, 0, 0, 0, 220, 189, 0, 190, 0, 0, + 212, 0, 0, 0, 0, 0, 73, 0, 0, 392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 282, 282, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 167, 167, 0, 402, - 401, 0, 0, 0, 0, 167, 167, 0, 0, 0, - 0, 0, 0, 0, 232, 0, 167, 0, 0, 0, - 0, 0, 284, 0, 0, 0, 0, 185, 0, 0, - 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 424, 0, 425, 426, 427, 0, - 0, 0, 0, 0, 316, 419, 0, 413, 0, 0, - 0, 290, 200, 0, 0, 0, 0, 0, 167, 0, - 0, 0, 0, 220, 189, 0, 190, 0, 0, 212, - 0, 0, 0, 0, 0, 73, 0, 0, 392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 469, 0, 0, 0, 0, 0, 0, + 0, 0, 315, 58, 0, 0, 0, 58, 0, 0, + 0, 0, 0, 162, 0, 0, 0, 0, 168, 0, + 0, 332, 331, 330, 329, 325, 326, 328, 327, 320, + 319, 321, 322, 323, 324, 0, 143, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 315, 58, 0, 0, 0, 58, 0, 0, 0, 0, - 0, 162, 0, 0, 0, 0, 168, 0, 0, 332, - 331, 330, 329, 325, 326, 328, 327, 320, 319, 321, - 322, 323, 324, 0, 143, 0, 0, 0, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 129, 167, 0, 0, 0, + 0, 0, 404, 403, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, + 0, 293, 0, 0, 186, 0, 0, 182, 0, 0, + 0, 303, 302, 0, 0, 0, 435, 0, 434, 0, + 0, 392, 0, 0, 0, 0, 0, 0, 0, 315, + 414, 421, 0, 321, 420, 0, 0, 0, 0, 0, + 0, 0, 0, 221, 0, 191, 193, 0, 0, 0, + 0, 75, 67, 0, 388, 394, 334, 356, 335, 357, + 336, 358, 337, 359, 338, 360, 339, 361, 340, 362, + 341, 363, 342, 364, 355, 377, 343, 365, 0, 0, + 345, 367, 346, 368, 347, 369, 348, 370, 349, 371, + 350, 372, 351, 373, 0, 0, 0, 0, 0, 0, + 464, 0, 465, 466, 0, 467, 0, 0, 0, 461, + 462, 0, 0, 0, 399, 86, 0, 457, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, + 0, 0, 0, 389, 0, 0, 0, 0, 472, 0, + 43, 0, 0, 0, 56, 0, 34, 35, 36, 37, + 38, 0, 453, 23, 21, 0, 0, 24, 0, 0, + 65, 474, 97, 66, 105, 0, 441, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 167, 0, 0, 0, 0, 0, - 404, 403, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 226, 0, 0, 0, 0, 0, 0, 0, 293, - 0, 0, 186, 0, 0, 182, 0, 0, 0, 303, - 302, 0, 0, 0, 435, 0, 434, 0, 0, 392, - 0, 0, 0, 0, 0, 0, 0, 315, 414, 421, - 0, 321, 420, 0, 0, 0, 0, 0, 0, 0, - 0, 221, 0, 191, 193, 0, 0, 0, 0, 75, - 67, 0, 388, 394, 334, 356, 335, 357, 336, 358, - 337, 359, 338, 360, 339, 361, 340, 362, 341, 363, - 342, 364, 355, 377, 343, 365, 0, 0, 345, 367, - 346, 368, 347, 369, 348, 370, 349, 371, 350, 372, - 351, 373, 0, 0, 0, 0, 0, 0, 463, 0, - 464, 465, 0, 466, 0, 0, 460, 461, 0, 0, - 0, 399, 86, 0, 457, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, - 389, 0, 0, 0, 0, 471, 0, 43, 0, 0, - 0, 56, 0, 34, 35, 36, 37, 38, 0, 453, - 23, 21, 0, 0, 24, 0, 0, 65, 473, 97, - 66, 105, 0, 441, 442, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 283, 281, 0, + 289, 0, 0, 118, 119, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 194, 0, 0, 0, + 157, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 223, + 0, 0, 0, 0, 0, 0, 285, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 283, 281, 0, 289, 0, 0, - 118, 119, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 192, 194, 0, 0, 0, 157, 159, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 261, 0, 223, 0, 0, 0, - 0, 0, 0, 285, 292, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 388, 436, 423, - 0, 0, 0, 0, 415, 0, 0, 0, 0, 0, - 0, 0, 187, 0, 0, 0, 0, 0, 0, 311, - 472, 0, 0, 391, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 470, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, - 74, 76, 78, 0, 0, 449, 0, 84, 0, 0, - 0, 0, 333, 0, 0, 0, 0, 0, 29, 0, - 22, 0, 0, 0, 0, 0, 0, 0, 0, 122, - 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 127, 0, 0, 0, 0, 0, 0, 0, 287, - 0, 0, 0, 0, 0, 0, 0, 0, 295, 0, - 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 267, 0, 266, 0, 272, 0, 274, 0, 268, - 0, 270, 0, 233, 262, 0, 0, 0, 180, 0, - 0, 0, 294, 0, 184, 183, 306, 0, 0, 30, - 31, 0, 0, 0, 0, 428, 429, 430, 431, 422, - 416, 0, 0, 0, 446, 0, 0, 0, 213, 0, - 0, 0, 0, 197, 393, 196, 344, 366, 352, 374, - 353, 375, 354, 376, 467, 468, 459, 0, 397, 398, - 396, 458, 0, 70, 0, 58, 0, 0, 0, 0, - 69, 0, 0, 0, 447, 0, 0, 0, 0, 0, - 0, 0, 0, 409, 0, 0, 25, 26, 0, 27, - 0, 0, 98, 101, 124, 0, 0, 0, 0, 0, - 0, 128, 0, 0, 145, 146, 0, 0, 130, 153, - 0, 0, 0, 0, 120, 0, 286, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, - 0, 167, 167, 0, 243, 0, 245, 0, 247, 0, - 411, 0, 0, 273, 275, 269, 271, 0, 0, 227, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, - 0, 438, 437, 393, 133, 134, 0, 0, 0, 0, - 87, 91, 0, 0, 312, 395, 0, 0, 0, 0, - 0, 81, 0, 0, 82, 0, 450, 169, 170, 171, - 172, 0, 39, 0, 0, 0, 0, 0, 41, 454, - 0, 0, 99, 102, 0, 0, 123, 131, 132, 136, - 0, 0, 147, 0, 0, 288, 0, 140, 0, 0, - 279, 152, 0, 0, 0, 0, 137, 0, 148, 154, - 0, 0, 0, 0, 408, 0, 407, 0, 0, 0, - 234, 0, 0, 235, 0, 0, 236, 0, 0, 0, - 0, 0, 0, 0, 179, 0, 0, 178, 0, 0, - 0, 173, 0, 0, 32, 0, 0, 444, 0, 215, - 214, 0, 0, 0, 0, 462, 72, 71, 77, 79, - 0, 85, 0, 44, 0, 0, 0, 410, 0, 0, - 0, 28, 0, 108, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 141, 126, 139, 151, 156, 0, 0, - 92, 93, 167, 0, 160, 161, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 0, 167, 0, 0, 0, - 0, 0, 164, 163, 0, 0, 0, 0, 88, 89, - 0, 0, 448, 0, 40, 0, 0, 0, 42, 57, - 0, 0, 0, 297, 299, 298, 300, 301, 144, 0, - 0, 0, 0, 0, 0, 406, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 277, 0, 0, 0, 228, - 0, 0, 174, 0, 0, 0, 443, 216, 0, 313, - 83, 0, 0, 0, 0, 0, 0, 100, 109, 0, - 103, 114, 0, 0, 0, 0, 158, 0, 249, 0, - 0, 251, 0, 0, 253, 0, 0, 0, 264, 0, - 224, 0, 167, 0, 0, 0, 135, 90, 0, 48, - 0, 54, 0, 0, 0, 0, 0, 121, 149, 296, - 405, 237, 0, 0, 244, 238, 0, 0, 246, 239, - 0, 0, 248, 0, 0, 0, 230, 0, 177, 0, - 0, 0, 0, 0, 0, 0, 0, 110, 112, 0, - 115, 116, 0, 0, 255, 0, 257, 0, 259, 265, - 276, 229, 225, 0, 0, 0, 0, 45, 0, 52, - 0, 0, 0, 439, 0, 0, 0, 240, 0, 0, - 241, 0, 0, 242, 0, 0, 181, 0, 175, 0, - 46, 0, 0, 205, 0, 111, 0, 117, 0, 0, - 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, - 0, 0, 106, 211, 250, 0, 252, 0, 254, 0, - 176, 47, 49, 0, 50, 0, 0, 0, 0, 0, - 0, 0, 55, 107, 256, 258, 260, 51, 53 + 388, 436, 423, 0, 0, 0, 0, 415, 0, 0, + 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, + 0, 0, 311, 473, 0, 0, 391, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 471, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 0, 0, 74, 76, 78, 0, 0, 449, + 0, 84, 0, 0, 0, 0, 333, 0, 0, 0, + 0, 0, 29, 0, 22, 0, 0, 0, 0, 0, + 0, 0, 0, 122, 122, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, + 0, 0, 0, 287, 0, 0, 0, 0, 0, 0, + 0, 0, 295, 0, 0, 188, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 267, 0, 266, 0, 272, + 0, 274, 0, 268, 0, 270, 0, 233, 262, 0, + 0, 0, 180, 0, 0, 0, 294, 0, 184, 183, + 306, 0, 0, 30, 31, 0, 0, 0, 0, 428, + 429, 430, 431, 422, 416, 0, 0, 0, 446, 0, + 0, 0, 213, 0, 0, 0, 0, 197, 393, 196, + 344, 366, 352, 374, 353, 375, 354, 376, 468, 469, + 459, 460, 0, 397, 398, 396, 458, 0, 70, 0, + 58, 0, 0, 0, 0, 69, 0, 0, 0, 447, + 0, 0, 0, 0, 0, 0, 0, 0, 409, 0, + 0, 25, 26, 0, 27, 0, 0, 98, 101, 124, + 0, 0, 0, 0, 0, 0, 128, 0, 0, 145, + 146, 0, 0, 130, 153, 0, 0, 0, 0, 120, + 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 199, 0, 0, 0, 0, 167, 167, 0, 243, + 0, 245, 0, 247, 0, 411, 0, 0, 273, 275, + 269, 271, 0, 0, 227, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 291, 0, 438, 437, 393, 133, + 134, 0, 0, 0, 0, 87, 91, 0, 0, 312, + 395, 0, 0, 0, 0, 0, 81, 0, 0, 82, + 0, 450, 169, 170, 171, 172, 0, 39, 0, 0, + 0, 0, 0, 41, 454, 0, 0, 99, 102, 0, + 0, 123, 131, 132, 136, 0, 0, 147, 0, 0, + 288, 0, 140, 0, 0, 279, 152, 0, 0, 0, + 0, 137, 0, 148, 154, 0, 0, 0, 0, 408, + 0, 407, 0, 0, 0, 234, 0, 0, 235, 0, + 0, 236, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 0, 178, 0, 0, 0, 173, 0, 0, 32, + 0, 0, 444, 0, 215, 214, 0, 0, 0, 0, + 463, 72, 71, 77, 79, 0, 85, 0, 44, 0, + 0, 0, 410, 0, 0, 0, 28, 0, 108, 113, + 0, 0, 0, 0, 0, 0, 0, 0, 141, 126, + 139, 151, 156, 0, 0, 92, 93, 167, 0, 160, + 161, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 0, 167, 0, 0, 0, 0, 0, 164, 163, 0, + 0, 0, 0, 88, 89, 0, 0, 448, 0, 40, + 0, 0, 0, 42, 57, 0, 0, 0, 297, 299, + 298, 300, 301, 144, 0, 0, 0, 0, 0, 0, + 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 277, 0, 0, 0, 228, 0, 0, 174, 0, 0, + 0, 443, 216, 0, 313, 83, 0, 0, 0, 0, + 0, 0, 100, 109, 0, 103, 114, 0, 0, 0, + 0, 158, 0, 249, 0, 0, 251, 0, 0, 253, + 0, 0, 0, 264, 0, 224, 0, 167, 0, 0, + 0, 135, 90, 0, 48, 0, 54, 0, 0, 0, + 0, 0, 121, 149, 296, 405, 237, 0, 0, 244, + 238, 0, 0, 246, 239, 0, 0, 248, 0, 0, + 0, 230, 0, 177, 0, 0, 0, 0, 0, 0, + 0, 0, 110, 112, 0, 115, 116, 0, 0, 255, + 0, 257, 0, 259, 265, 276, 229, 225, 0, 0, + 0, 0, 45, 0, 52, 0, 0, 0, 439, 0, + 0, 0, 240, 0, 0, 241, 0, 0, 242, 0, + 0, 181, 0, 175, 0, 46, 0, 0, 205, 0, + 111, 0, 117, 0, 0, 0, 0, 0, 0, 0, + 231, 0, 0, 0, 0, 0, 0, 106, 211, 250, + 0, 252, 0, 254, 0, 176, 47, 49, 0, 50, + 0, 0, 0, 0, 0, 0, 0, 55, 107, 256, + 258, 260, 51, 53 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 82, 862, 83, 84, 633, 1281, 1287, - 853, 1023, 1433, 1599, 854, 1552, 1633, 855, 1601, 856, - 857, 1027, 298, 397, 85, 644, 406, 1383, 1384, 407, - 1582, 1441, 1488, 1442, 1491, 899, 1309, 1188, 616, 434, - 435, 436, 437, 259, 376, 377, 88, 89, 90, 91, - 92, 93, 260, 937, 1511, 1573, 699, 1331, 1334, 1337, - 1532, 1536, 1540, 1588, 1591, 1594, 933, 934, 1058, 896, - 670, 708, 95, 96, 97, 98, 261, 158, 450, 219, - 1172, 262, 263, 264, 508, 272, 839, 1016, 583, 402, - 584, 99, 265 + -1, 2, 3, 82, 865, 83, 84, 635, 1286, 1292, + 856, 1027, 1438, 1604, 857, 1557, 1638, 858, 1606, 859, + 860, 1031, 298, 398, 85, 646, 407, 1388, 1389, 408, + 1587, 1446, 1493, 1447, 1496, 902, 1314, 1193, 618, 435, + 436, 437, 438, 259, 377, 378, 88, 89, 90, 91, + 92, 93, 260, 940, 1516, 1578, 701, 1336, 1339, 1342, + 1537, 1541, 1545, 1593, 1596, 1599, 936, 937, 1062, 899, + 672, 710, 95, 96, 97, 98, 261, 158, 451, 219, + 1177, 262, 263, 264, 509, 272, 842, 1020, 584, 403, + 585, 99, 265 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -1231 +#define YYPACT_NINF -1238 static const yytype_int16 yypact[] = { - 4983, 21, 50, 5091, -1231, -1231, 379, 112, 77, 44, - 119, 33, 174, 178, 184, 260, 279, 152, 171, -40, - 185, 221, 8, 257, 286, 16, 311, 322, 426, 301, - 441, 528, 361, 481, 498, 552, 523, 673, 596, 78, - 436, 546, -87, 442, 165, 165, 450, 402, 53, 313, - 564, 570, 14, 52, 576, 588, 168, 651, 654, 657, - 2762, 669, 495, 510, 514, 18, 43, -1231, 518, -1231, - 685, 686, 538, -1231, 712, 725, 27, 28, -1231, -1231, - -1231, 4677, -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, - -1231, -1231, -1231, -1231, -1231, -1231, -1231, 19, -1231, 547, - 114, -1231, 7, -1231, -1231, -1231, -1231, 307, 350, 401, - 502, 515, 525, 529, 532, 555, 565, 572, 594, 601, - 606, 621, 630, 641, 662, 684, 690, 691, 694, 697, - 698, 568, 577, 581, 590, 595, 607, 622, -1231, -1231, - -1231, 727, 626, 635, 638, -1231, -1231, -1231, 4677, 4677, - 4677, 4255, 2547, 42, 810, 489, 646, 688, -1231, 647, - 821, -108, 847, 4677, 290, 290, -1231, 4677, -1231, -1231, - -1231, -1231, -1231, -1231, -1231, 4677, 4469, 4677, 4677, 701, - 4677, 4469, 4677, 4677, 735, 4469, 4677, 4677, 3100, 749, - 681, -1231, 4469, 754, 775, 2762, 2762, 2762, 779, -1231, - -1231, -1231, -1231, 784, 836, 846, 3100, 4677, 873, 3100, - 18, 710, 751, 165, 165, 165, 4677, 4677, -41, -1231, - -22, 165, 781, 926, 942, 4424, 289, -14, 862, 977, - 981, 2762, 2762, 3100, 991, 25, 841, -1231, 1011, -1231, - 985, 986, 987, 2762, 2762, 999, 1000, 1002, 371, -1231, - 1005, 29, 1165, 1176, 1177, 741, 3269, 4677, 2363, -1231, - -1231, 2201, -1231, 1178, -1231, -97, 1179, 4677, 4677, 4677, - 1009, 4677, 1010, 1061, 4677, 4677, -1231, -1231, 4677, 1183, - -1231, 1184, -1231, 1185, -1231, -111, 1153, -1231, 3100, 3100, - 1015, 458, -1231, -1231, -1231, -1231, -1231, -1231, 3100, 1188, - 1021, 4677, 1193, 4677, 4677, 4677, 4677, 4677, 4677, 4677, - 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, - 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, - 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, - 4677, 4677, 4677, 4677, 4677, 4677, 4677, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 4677, 290, - 290, 290, 1035, 1035, 1035, 4469, 7517, 120, 4469, 6712, - 445, 1031, 1206, 1042, 1039, -1231, 1048, 5179, 4677, -1231, - 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, 4677, - 4677, 4677, 4677, 4677, 4677, -1231, -1231, -1231, -1231, 1722, - 206, 151, -1231, -1231, 197, 5958, -62, -7, 7538, 4469, - 4737, -1231, 293, 7559, 7580, 4677, 7601, 471, 7622, 7643, - 4677, 642, 7664, 7685, 1210, 4677, 4677, 655, 4677, 4677, - 1223, 1225, 1225, 4677, 1064, 1066, 1067, 1068, 4677, 4677, - 4677, 1232, 5904, 1069, 1235, 1070, -1231, -1231, 69, -1231, - -1231, 5984, 6010, 165, 165, 489, 489, 139, 4677, 4677, - 4677, 4424, 4424, 4677, 5179, 160, -1231, 4677, 4677, 4677, - 4677, 4677, 1237, 1236, 1239, 4677, 1242, -1231, 4677, 4677, - 719, -1231, 4469, 4469, 4469, 1246, 1249, 4677, 4677, 4677, - -133, 4204, 1254, 1255, -1231, 4677, -1231, -1231, -1231, 1084, - 1085, 1086, 1087, 4469, 1035, -1231, 7706, -1231, 700, 4677, - 3438, -1231, -1231, 7727, 7748, 7769, 1143, 6036, -1231, 1089, - 4760, 7790, 6735, -1231, -1231, 1432, -1231, 1580, 4677, -1231, - 1099, 707, 4677, 1267, 1269, -1231, 4677, 6758, 5, 7811, - 6781, 7832, 6804, 7853, 6827, 7874, 6850, 7895, 6873, 7916, - 6896, 7937, 6919, 7958, 6942, 7979, 6965, 8000, 6988, 8021, - 7011, 6062, 6088, 8042, 7034, 8063, 7057, 8084, 7080, 8105, - 7103, 8126, 7126, 8147, 7149, 8168, 7172, 6114, 6140, 6166, - 6192, 6218, 6244, -1231, 319, 294, 332, 411, 1101, 1107, - 1109, 1106, 1108, 1110, 357, 2044, 1114, 1120, 1121, 708, - 120, -1231, 3100, 717, 68, 458, 4677, 1294, 1297, 24, - 1145, -1231, 55, 17, 26, 103, -1231, 1857, 4779, 2358, - 865, 932, 932, 545, 545, 545, 545, 559, 559, 1035, - 1035, 1035, 1035, 20, -1231, 4677, 1315, 31, 4469, 1314, - 4469, 4677, 1317, -1231, 1320, 1319, 290, 1321, 4469, 4469, - 1196, 1322, 1323, 8189, 1325, 1201, 1327, 1328, 8210, 1202, - 1329, 1330, 4677, 8231, 5176, 1161, 8252, 8273, 4677, 3100, - 1335, 1334, 8294, 4632, 4632, 4632, 4632, 8315, 8336, 8357, - 3100, 4469, 1167, -1231, -1231, 1608, 1784, 165, 4677, 4677, - -1231, -1231, 1166, 1170, 4424, 6270, 6296, 6322, 2330, 661, - 165, 1911, 8378, 5204, 8399, 8420, 8441, 4677, 1337, -1231, - 4677, 8462, -1231, 7195, 7218, -1231, 718, 722, 723, -1231, - -1231, 7241, 7264, 6348, -1231, 4469, -1231, 4469, 7287, -97, - 1172, 5232, 4469, 4469, 4469, 4469, 726, -1231, -1231, 4798, - 4469, 1035, -1231, 1343, 1344, 1348, 1182, 4677, 1991, 4677, - 4677, -1231, 38, -1231, -1231, 1180, 3100, 1352, 5260, -1231, - -1231, 7310, 443, -1231, -1231, -1231, -1231, -1231, -1231, -1231, - -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, - -1231, -1231, -1231, -1231, -1231, -1231, 4677, 4677, -1231, -1231, - -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, - -1231, -1231, 4677, 4677, 4677, 4677, 4677, 4677, -1231, 290, - -1231, -1231, 4469, -1231, 4469, 290, -1231, -1231, 290, 290, - 290, -1231, -1231, 4677, -1231, 290, 1199, 4677, 1353, 1191, - 48, 4677, 1365, 1366, 2128, -1231, 1367, 1204, 18, 1371, - -1231, 4469, 4469, 4469, 4469, -1231, 4677, -1231, 1209, 1212, - 1207, -1231, 1379, -1231, -1231, -1231, -1231, -1231, 7333, -1231, - -1231, 1229, 290, 384, -1231, 394, 6374, -1231, 1208, 1383, - -1231, -1231, 165, 4737, -1231, 840, 3100, 3100, 1387, 3100, - 843, 3100, 3100, 1388, 1336, 3100, 3100, 2178, 1389, 1396, - 4469, 1398, 1399, 831, -1231, -1231, 1401, -1231, 1403, 1240, - 8693, -1231, 1241, 1247, 1248, 1410, 1413, 1415, 1417, 736, - 1420, 2807, -1231, -1231, 216, 6400, 6426, -1231, -1231, 5288, - -60, 165, 165, 165, 1421, 1424, 1250, 1425, 1256, 30, - 36, 37, 49, 611, -1231, 297, -1231, 661, 1426, 1429, - 1430, 1434, 1435, 8693, -1231, 3216, 1262, 1442, 1443, 1445, - 1386, 4677, 1447, 1451, 4677, 753, 757, 9, -1231, -1231, - 758, 762, 763, 766, -1231, 4677, 770, 3100, 3100, 3100, - 1428, 6452, -1231, 4817, 282, 1454, 1455, 3100, 1292, -1231, - -1231, 1465, 1473, -1231, 1472, 8483, 7356, 8504, 7379, 8525, - 7402, 8546, 7425, -1231, 455, 412, 1310, 1306, 1312, 1331, - 8567, 1338, 120, 3235, -1231, 120, 454, 1311, 1479, 3394, - -1231, -1231, -1231, 18, 4677, -1231, 774, -1231, 788, 795, - 796, 799, 8693, 1318, 4677, 4677, 3100, 1340, -1231, 1332, - -1231, 1485, 35, 1499, 4677, 3945, 59, 1341, 1356, 1438, - 1438, 3100, 1509, 1357, 1358, 1515, 1519, 3100, 1359, 1531, - 1532, -1231, 1534, 3100, 800, 3100, 3100, 1536, 1535, -1231, - 3100, 1541, 1546, 1548, 1553, 3100, 3100, 3100, -1231, 1554, - 237, -1231, 4677, 4677, 4677, 1385, 1391, -54, 61, 115, - 1392, -1231, 3100, -1231, 4677, -1231, 1559, -1231, 1560, -1231, - 1563, -1231, 1564, -1231, -1231, 4424, 648, 2931, -1231, 1395, - 1397, 3607, -1231, 4469, -1231, -1231, -1231, 1400, 3554, -1231, - -1231, 7448, 1405, 1406, 1576, -1231, -1231, -1231, -1231, 8693, - -1231, 1581, 1583, 1469, -1231, 4677, 4677, 4677, -1231, 1585, - 507, 1418, 1589, -1231, 110, -1231, -1231, -1231, -1231, -1231, - -1231, -1231, -1231, -1231, -1231, -1231, -1231, 290, -1231, -1231, - -1231, -1231, 3100, -1231, 3100, 458, 4677, 1590, 1593, 24, - -1231, 1592, 7471, 18, -1231, 1596, 1597, 1598, 1599, 4677, - 6478, 6504, 823, -1231, 4677, 1602, -1231, -1231, 290, -1231, - 6530, 4632, 8693, -1231, -1231, 4677, 4677, 165, 1601, 1605, - 1606, -1231, 4677, 4677, -1231, -1231, 1607, 4677, -1231, -1231, - 1603, 1609, 1456, 1616, 1503, 4677, -1231, 1626, 3100, 3100, - 3100, 3100, 1628, 998, 1629, 4677, -1231, 4632, 5316, 8588, - 4846, 489, 489, 165, 1630, 165, 1632, 165, 1633, 4677, - 96, 1476, 8609, -1231, -1231, -1231, -1231, 5344, 299, -1231, - 1647, 63, 1648, 3100, 165, 63, 1651, 827, 4677, -1231, - 1655, -1231, -1231, -97, -1231, -1231, 3100, 5113, 150, 8630, - -1231, -1231, 3990, 3100, -1231, -1231, 1491, 1657, 1659, 1660, - 3573, -1231, 1671, 1674, -1231, 1507, -1231, -1231, -1231, -1231, - -1231, 474, 8693, 4677, 4677, 3100, 1505, 834, 8693, -1231, - 1679, 4677, 8693, -1231, 5372, 5400, 136, -1231, -1231, -1231, - 5428, 5456, -1231, 5484, 1684, -1231, 3100, -1231, 1636, 1687, - 8693, -1231, 1690, 1695, 1696, 1697, -1231, 1513, -1231, -1231, - 5931, 3732, 1698, 1529, -1231, 4677, -1231, 1530, 1533, 328, - -1231, 1537, 345, -1231, 1539, 366, -1231, 1540, 7494, 1701, - 3100, 1702, 1542, 4677, -1231, 3776, 370, -1231, 855, 376, - 429, -1231, 1704, 5512, -1231, 1600, 4677, -1231, 4677, -1231, - -1231, 4469, 3893, 1706, 1543, -1231, -1231, -1231, -1231, -1231, - 18, -1231, 1595, -1231, 4677, 6556, 6582, -1231, 3100, 4677, - 1723, -1231, 6608, -1231, -1231, 1724, 1725, 1727, 1729, 1730, - 1731, 859, 1561, -1231, -1231, -1231, -1231, -1231, 3100, 4469, - -1231, -1231, 489, 5148, -1231, -1231, 4424, 661, 4424, 661, - 4424, 661, 1733, -1231, 860, 3100, -1231, 5540, 165, 1738, - 4469, 165, -1231, -1231, 4677, 5568, 5596, 864, -1231, -1231, - 1744, 1745, -1231, 1575, 8693, 4677, 4677, 921, 8693, -1231, - 4677, 924, 928, -1231, -1231, -1231, -1231, -1231, -1231, 1578, - 4677, 931, 934, 1579, 4677, -1231, 5624, 438, 773, 5652, - 447, 861, 5680, 464, 1187, -1231, 3100, 1753, 1678, 2976, - 1594, 468, -1231, 935, 477, 3912, -1231, -1231, 1760, -1231, - -1231, 4677, 8651, 6634, 34, 6660, 1768, -1231, -1231, 1769, - -1231, -1231, 4677, 5708, 1770, 1771, -1231, 5736, 1772, 4677, - 1773, 1774, 4677, 1775, 1776, 4677, 1777, 1610, -1231, 4677, - -1231, 661, -1231, 4469, 1778, 3776, -1231, -1231, 938, -1231, - 4677, -1231, 3100, 4677, 2593, 4159, 6686, -1231, -1231, -1231, - -1231, -1231, 1612, 5764, -1231, -1231, 1613, 5792, -1231, -1231, - 1614, 5820, -1231, 1779, 4580, 1260, 3145, 939, -1231, 491, - 959, 1781, 1615, 8672, 960, 5848, 2363, -1231, -1231, 290, - 8693, -1231, 4677, 661, 1787, 661, 1788, 661, 1789, -1231, - -1231, -1231, -1231, 661, 1792, 4469, 1793, -1231, 290, -1231, - 1624, 1797, 963, 4603, 964, 5876, 1291, -1231, 1627, 1354, - -1231, 1634, 1422, -1231, 1639, 1517, -1231, 967, -1231, 970, - -1231, 1642, 3100, -1231, 4677, -1231, 458, -1231, 1799, 1800, - 661, 1811, 661, 1814, 661, -1231, 1817, 290, 1819, 290, - 976, 4706, -1231, -1231, -1231, 1640, -1231, 1661, -1231, 2332, - -1231, -1231, -1231, 980, -1231, 1820, 458, 1821, 1822, 1823, - 290, 1824, -1231, -1231, -1231, -1231, -1231, -1231, -1231 + 5067, 40, 69, 5175, -1238, -1238, 80, 79, 12, -52, + -40, 29, 138, 157, 164, 179, 184, 44, 57, -95, + 88, 104, 1, 137, 173, 19, 208, 217, 130, 183, + 327, 441, 318, 392, 406, 268, 442, 574, 456, 222, + 341, 470, -81, 348, -84, -84, 378, 454, 178, -34, + 498, 482, 16, 56, 519, 526, 398, 552, 587, 612, + 3067, 625, 433, 452, 483, 20, 33, -1238, 528, -1238, + 626, 632, 477, -1238, 704, 732, 10, 25, -1238, -1238, + -1238, 1112, -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, + -1238, -1238, -1238, -1238, -1238, -1238, -1238, 22, -1238, 558, + 65, -1238, 5, -1238, -1238, -1238, -1238, -105, 321, 532, + 537, 542, 549, 550, 563, 588, 599, 604, 630, 631, + 640, 665, 666, 670, 678, 682, 683, 689, 693, 697, + 701, 712, 570, 575, 592, 595, 600, 603, -1238, -1238, + -1238, 772, 614, 639, 643, -1238, -1238, -1238, 1112, 1112, + 1112, 4566, 4346, 35, 812, 365, 646, 635, -1238, 647, + 811, 112, 821, 1112, 462, 462, -1238, 1112, -1238, -1238, + -1238, -1238, -1238, -1238, -1238, 1112, 4786, 1112, 1112, 660, + 1112, 4786, 1112, 1112, 661, 4786, 1112, 1112, 3405, 673, + 667, -1238, 4786, 686, 690, 3067, 3067, 3067, 694, -1238, + -1238, -1238, -1238, 698, 705, 713, 3405, 1112, 870, 3405, + 20, 714, 729, -84, -84, -84, 1112, 1112, -32, -1238, + -21, -84, 730, 733, 741, 4617, -18, -36, 717, 745, + 762, 3067, 3067, 3405, 763, 36, 765, -1238, 954, -1238, + 809, 818, 842, 3067, 3067, 838, 885, 898, 488, -1238, + 901, 28, 1069, 1072, 1084, 618, 3574, 1112, 2722, -1238, + -1238, 2694, -1238, 1088, -1238, -111, 1095, 1112, 1112, 1112, + 946, 1112, 947, 977, 1112, 1112, -1238, -1238, 1112, 1119, + -1238, 1150, -1238, 1155, -1238, 395, 845, -1238, 3405, 3405, + 989, 567, -1238, -1238, -1238, -1238, -1238, -1238, 3405, 1161, + 1004, 1112, 1179, 1112, 1112, 1112, 1112, 1112, 1112, 1112, + 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, + 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, + 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, + 1112, 1112, 1112, 1112, 1112, 1112, 1112, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 1112, + 462, 462, 462, 1018, 1018, 1018, 4786, 7535, 73, 4786, + 6730, 227, 1021, 1189, 1029, 1038, -1238, 1034, 4119, 1112, + -1238, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, + 1112, 1112, 1112, 1112, 1112, 1112, -1238, -1238, -1238, -1238, + 886, 451, -16, -1238, -1238, 15, 5976, 297, 345, 7556, + 4786, 3521, -1238, 568, 7577, 7598, 1112, 7619, 710, 7640, + 7661, 1112, 727, 7682, 7703, 1209, 1112, 1112, 738, 1112, + 1112, 1233, 1238, 1238, 1112, 1078, 1081, 1085, 1100, 1112, + 1112, 1112, 1247, 5896, 1110, 1269, 1106, -1238, -1238, -7, + -1238, -1238, 6002, 6028, -84, -84, 365, 365, 115, 1112, + 1112, 1112, 4617, 4617, 1112, 4119, 149, -1238, 1112, 1112, + 1112, 1112, 1112, 1278, 1280, 1281, 1112, 1286, -1238, 1112, + 1112, 663, -1238, 4786, 4786, 4786, 1289, 1292, 1112, 1112, + 1112, 3, 4521, 1295, 1297, -1238, 1112, -1238, -1238, -1238, + 1128, 1130, 1135, 1136, 4786, 1018, -1238, 7724, -1238, 769, + 1112, 3743, -1238, -1238, 7745, 7766, 7787, 1193, 6054, -1238, + 1139, 3540, 7808, 6753, -1238, -1238, 688, -1238, 833, 1112, + -1238, 1146, 770, 1112, 1312, 1313, -1238, 1112, 6776, 214, + 7829, 6799, 7850, 6822, 7871, 6845, 7892, 6868, 7913, 6891, + 7934, 6914, 7955, 6937, 7976, 6960, 7997, 6983, 8018, 7006, + 8039, 7029, 6080, 6106, 8060, 7052, 8081, 7075, 8102, 7098, + 8123, 7121, 8144, 7144, 8165, 7167, 8186, 7190, 6132, 6158, + 6184, 6210, 6236, 6262, -1238, 145, 389, 230, 506, 1144, + 1145, 1151, 1153, 1206, 1207, 1210, 272, 1584, 1211, 1214, + 1213, 777, 73, -1238, 3405, 778, 165, 567, 1112, 1384, + 1388, 21, 1220, -1238, 107, 18, 27, 304, -1238, 4880, + 3697, 766, 1215, 1063, 1063, 435, 435, 435, 435, 525, + 525, 1018, 1018, 1018, 1018, 23, -1238, 1112, 1390, 32, + 4786, 1389, 4786, 1112, 1391, -1238, 1392, 1393, 462, 1395, + 4786, 4786, 1273, 1411, 1412, 8207, 1413, 1275, 1414, 1415, + 8228, 1298, 1417, 1423, 1112, 8249, 5168, 1249, 8270, 8291, + 1112, 3405, 1424, 1425, 8312, 4949, 4949, 4949, 4949, 8333, + 8354, 8375, 3405, 4786, 1260, -1238, -1238, 1000, 2007, -84, + 1112, 1112, -1238, -1238, 1257, 1258, 4617, 6288, 6314, 6340, + 5950, 434, -84, 2198, 8396, 5196, 8417, 8438, 8459, 1112, + 1433, -1238, 1112, 8480, -1238, 7213, 7236, -1238, 785, 802, + 803, -1238, -1238, 7259, 7282, 6366, -1238, 4786, -1238, 4786, + 7305, -111, 1268, 5224, 4786, 4786, 4786, 4786, 807, -1238, + -1238, 3859, 4786, 1018, -1238, 1435, 1437, 1438, 1272, 1112, + 2275, 1112, 1112, -1238, -1, -1238, -1238, 1270, 3405, 1448, + 5252, -1238, -1238, 7328, 445, -1238, -1238, -1238, -1238, -1238, + -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, + -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, 1112, 1112, + -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, + -1238, -1238, -1238, -1238, 1112, 1112, 1112, 1112, 1112, 1112, + -1238, 462, -1238, -1238, 4786, -1238, 4786, 462, 462, -1238, + -1238, 462, 462, 462, -1238, -1238, 1112, -1238, 462, 1284, + 1112, 1452, 1291, 45, 1112, 1453, 1459, 1637, -1238, 1460, + 1294, 20, 1465, -1238, 4786, 4786, 4786, 4786, -1238, 1112, + -1238, 1302, 1303, 1301, -1238, 1473, -1238, -1238, -1238, -1238, + -1238, 7351, -1238, -1238, 1323, 462, 468, -1238, 490, 6392, + -1238, 1308, 1481, -1238, -1238, -84, 3521, -1238, 925, 3405, + 3405, 1482, 3405, 926, 3405, 3405, 1488, 1428, 3405, 3405, + 1840, 1490, 1492, 4786, 1493, 1497, 4053, -1238, -1238, 1502, + -1238, 1508, 1345, 8711, -1238, 1346, 1348, 1349, 1524, 1528, + 1529, 1531, 839, 1534, 2532, -1238, -1238, 162, 6418, 6444, + -1238, -1238, 5280, -108, -84, -84, -84, 1535, 1536, 1363, + 1537, 1371, 38, 39, 41, 42, 479, -1238, 166, -1238, + 434, 1538, 1542, 1543, 1546, 1547, 8711, -1238, 1979, 1367, + 1550, 1552, 1554, 1483, 1112, 1557, 1558, 1112, 840, 844, + 212, -1238, -1238, 848, 849, 853, 854, -1238, 1112, 857, + 3405, 3405, 3405, 1561, 6470, -1238, 3878, 813, 1562, 1563, + 3405, 1396, -1238, -1238, 1569, 1565, -1238, 1575, 8501, 7374, + 8522, 7397, 8543, 7420, 8564, 7443, -1238, 492, 523, 1416, + 1409, 1407, 1418, 1420, 8585, 1422, 73, 2004, -1238, 73, + 330, 1410, 1578, 2402, -1238, -1238, -1238, 20, 1112, -1238, + 880, -1238, 905, 909, 910, 917, 8711, 1426, 1112, 1112, + 3405, 1427, -1238, 1429, -1238, 1580, 37, 1582, 1112, 393, + 4, 1431, 1432, 1517, 1517, 3405, 1589, 1436, 1439, 1591, + 1592, 3405, 1440, 1594, 1595, -1238, 1597, 3405, 928, 3405, + 3405, 1601, 1604, -1238, 3405, 1605, 1607, 1608, 1611, 3405, + 3405, 3405, -1238, 1613, 81, -1238, 1112, 1112, 1112, 1445, + 1446, -110, -97, 70, 1454, -1238, 3405, -1238, 1112, -1238, + 1618, -1238, 1621, -1238, 1623, -1238, 1625, -1238, -1238, 4617, + 990, 3236, -1238, 1457, 1461, 3912, -1238, 4786, -1238, -1238, + -1238, 1462, 2501, -1238, -1238, 7466, 1466, 1467, 1640, -1238, + -1238, -1238, -1238, 8711, -1238, 1635, 1639, 1525, -1238, 1112, + 1112, 1112, -1238, 1641, 203, 1474, 1643, -1238, 380, -1238, + -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, + -1238, -1238, 462, -1238, -1238, -1238, -1238, 3405, -1238, 3405, + 567, 1112, 1645, 1649, 21, -1238, 1648, 7489, 20, -1238, + 1651, 1654, 1660, 1661, 1112, 6496, 6522, 929, -1238, 1112, + 1666, -1238, -1238, 462, -1238, 6548, 4949, 8711, -1238, -1238, + 1112, 1112, -84, 1665, 1668, 1669, -1238, 1112, 1112, -1238, + -1238, 1674, 1112, -1238, -1238, 1650, 1675, 1513, 1685, 1577, + 1112, -1238, 1695, 3405, 3405, 3405, 3405, 1697, 1104, 1698, + 1112, -1238, 4949, 5308, 8606, 2258, 365, 365, -84, 1700, + -84, 1703, -84, 1704, 1112, 109, 1539, 8627, -1238, -1238, + -1238, -1238, 5336, 180, -1238, 1705, 1871, 1708, 3405, -84, + 1871, 1710, 933, 1112, -1238, 1713, -1238, -1238, -111, -1238, + -1238, 3405, 4733, 142, 8648, -1238, -1238, 4250, 3405, -1238, + -1238, 1549, 1715, 1716, 1718, 2537, -1238, 1719, 1722, -1238, + 1555, -1238, -1238, -1238, -1238, -1238, 493, 8711, 1112, 1112, + 3405, 1553, 936, 8711, -1238, 1726, 1112, 8711, -1238, 5364, + 5392, 83, -1238, -1238, -1238, 5420, 5448, -1238, 5476, 1728, + -1238, 3405, -1238, 1686, 1746, 8711, -1238, 1749, 1754, 1755, + 1756, -1238, 1586, -1238, -1238, 5923, 2672, 1760, 1590, -1238, + 1112, -1238, 1598, 1599, 224, -1238, 1593, 229, -1238, 1602, + 281, -1238, 1603, 7512, 1763, 3405, 1765, 1606, 1112, -1238, + 4081, 295, -1238, 972, 339, 347, -1238, 1769, 5504, -1238, + 1658, 1112, -1238, 1112, -1238, -1238, 4786, 3183, 1775, 1624, + -1238, -1238, -1238, -1238, -1238, 20, -1238, 1659, -1238, 1112, + 6574, 6600, -1238, 3405, 1112, 1778, -1238, 6626, -1238, -1238, + 1779, 1780, 1797, 1798, 1799, 1801, 975, 1631, -1238, -1238, + -1238, -1238, -1238, 3405, 4786, -1238, -1238, 365, 4852, -1238, + -1238, 4617, 434, 4617, 434, 4617, 434, 1803, -1238, 976, + 3405, -1238, 5532, -84, 1806, 4786, -84, -1238, -1238, 1112, + 5560, 5588, 984, -1238, -1238, 1807, 1808, -1238, 1642, 8711, + 1112, 1112, 999, 8711, -1238, 1112, 1006, 1010, -1238, -1238, + -1238, -1238, -1238, -1238, 1644, 1112, 1014, 1015, 1638, 1112, + -1238, 5616, 368, 1202, 5644, 390, 1368, 5672, 399, 1421, + -1238, 3405, 1811, 1736, 2943, 1646, 417, -1238, 1035, 429, + 3202, -1238, -1238, 1814, -1238, -1238, 1112, 8669, 6652, 30, + 6678, 1818, -1238, -1238, 1820, -1238, -1238, 1112, 5700, 1826, + 1831, -1238, 5728, 1837, 1112, 1838, 1839, 1112, 1841, 1843, + 1112, 1844, 1673, -1238, 1112, -1238, 434, -1238, 4786, 1847, + 4081, -1238, -1238, 1052, -1238, 1112, -1238, 3405, 1112, 2898, + 4295, 6704, -1238, -1238, -1238, -1238, -1238, 1677, 5756, -1238, + -1238, 1678, 5784, -1238, -1238, 1680, 5812, -1238, 1852, 3361, + 1470, 3112, 1055, -1238, 460, 1058, 1853, 1683, 8690, 1059, + 5840, 2722, -1238, -1238, 462, 8711, -1238, 1112, 434, 1855, + 434, 1856, 434, 1857, -1238, -1238, -1238, -1238, 434, 1858, + 4786, 1859, -1238, 462, -1238, 1693, 1866, 1065, 2340, 1083, + 5868, 1576, -1238, 1696, 1587, -1238, 1699, 1733, -1238, 1701, + 1846, -1238, 1089, -1238, 1090, -1238, 1702, 3405, -1238, 1112, + -1238, 567, -1238, 1877, 1878, 434, 1902, 434, 1903, 434, + -1238, 1904, 462, 1906, 462, 1093, 2560, -1238, -1238, -1238, + 1880, -1238, 2011, -1238, 2145, -1238, -1238, -1238, 1098, -1238, + 1907, 567, 1908, 1913, 1914, 462, 1915, -1238, -1238, -1238, + -1238, -1238, -1238, -1238 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1231, -1231, -1231, -1231, 801, -1231, -1231, -1231, -1231, 351, - -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, -1231, - -1231, -1231, -316, -47, -1231, 1427, -1231, -1231, -1231, -1231, - -1231, -1231, -1231, -1231, -1231, -259, -1231, 791, 1833, -1231, - -1231, -1231, -1231, -1, -447, -220, -1231, -1231, -1231, -1231, - -1231, -1231, 1834, -1231, -1231, -1231, -1231, -1231, -1231, -1231, - -1231, -1231, -1231, -1231, -1231, -1231, -931, -929, -1231, -1231, - 1408, -1231, -1231, -1231, -1231, -1231, 740, -1231, 58, -1231, - -1230, 1065, 143, 1075, -166, -203, 679, -1231, 10, -5, - -334, -1231, -3 + -1238, -1238, -1238, -1238, 841, -1238, -1238, -1238, -1238, 436, + -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, -1238, + -1238, -1238, -355, -79, -1238, 1518, -1238, -1238, -1238, -1238, + -1238, -1238, -1238, -1238, -1238, -247, -1238, 881, 1924, -1238, + -1238, -1238, -1238, 26, -449, -211, -1238, -1238, -1238, -1238, + -1238, -1238, 1926, -1238, -1238, -1238, -1238, -1238, -1238, -1238, + -1238, -1238, -1238, -1238, -1238, -1238, -922, -917, -1238, -1238, + 1499, -1238, -1238, -1238, -1238, -1238, 1022, -1238, 14, -1238, + -1237, 1419, 86, 207, 143, -206, 771, -1238, 11, -5, + -346, -1238, -3 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1767,1430 +1769,1434 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -455 static const yytype_int16 yytable[] = { - 100, 160, 87, 161, 1094, 464, 1096, 445, 692, 693, - 412, 300, 179, 1348, 585, 417, 159, 480, 235, 421, - 184, 179, 270, 594, 847, 287, 427, 4, 837, 476, - 184, 477, 281, 283, 494, 210, 1085, 860, 724, 166, - 1521, 1177, 1087, 1089, 725, 975, 370, 273, 211, 212, - 5, 602, 1006, 299, 606, 1091, 238, 227, 239, 296, - 297, 528, 525, 492, 527, 1184, 101, 248, 156, -452, - 296, 297, 104, 105, 106, 601, 1391, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 250, - 453, 454, 218, 220, 509, 226, 453, 454, 135, 136, - 137, 642, 240, 228, 643, 139, 140, 229, 1076, 453, - 454, 291, 1223, 251, 1224, 162, 252, 601, 230, 253, - 175, 254, 848, 849, 850, 851, 455, 176, 453, 454, - 1086, 206, 255, 163, 207, 236, 1088, 1090, 1437, 43, - 44, 45, 46, 47, 375, 456, 467, 51, 1358, 1092, - 54, 403, 403, 468, 371, 372, 645, 1094, 1451, 643, - 1007, 1008, 296, 297, 401, 404, 296, 297, 180, 301, - 168, 302, -453, 1114, 169, 181, 156, 180, 861, 288, - 170, 237, 861, 185, 842, 271, 289, 478, 852, 599, - 142, 838, 603, 843, 282, 284, 495, 145, 146, 147, - 167, 1522, 976, 274, 164, 292, 293, 294, 295, 453, - 454, 453, 454, 461, 1345, 175, 685, 686, 150, 453, - 454, 243, 841, 463, 244, 296, 297, 1225, 154, 1226, - 217, 507, 830, 1216, 1217, 687, 701, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 510, 392, - 393, 292, 293, 294, 295, 394, 171, 292, 293, 294, - 295, 448, 449, 187, 1339, 453, 454, 296, 297, 457, - 844, 296, 297, 465, 827, 172, 533, -454, 831, 165, - 1127, 1227, 1554, 1228, 400, 103, 453, 454, 748, 453, - 454, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 694, 716, 717, 718, 394, - 453, 454, 637, 607, 173, 214, 215, 638, 1359, 129, - 130, 131, 132, 133, 134, 216, 700, 736, 430, 431, - 432, 138, 217, 174, 403, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 177, 403, 403, 403, 586, - 587, 588, 589, 590, 591, 592, 593, 189, 639, 596, - 597, 598, 1620, 640, 472, 473, 453, 454, 635, 231, - 636, 232, 101, 102, 103, 156, 485, 486, 104, 105, - 106, 178, 1072, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 902, 903, 904, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 182, 143, 144, - 138, 139, 140, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 400, 103, 453, - 454, 394, 605, 1128, 375, 375, 183, 453, 454, 453, - 454, 1155, 222, 103, 911, 223, 466, 810, 224, 649, - 809, 650, 863, 1095, 865, 1343, 1458, 303, 1461, 304, - 1464, 186, 129, 130, 131, 132, 133, 134, 453, 454, - 808, 763, 187, 374, 138, 809, 188, 129, 130, 131, - 132, 133, 134, 811, 1406, 453, 454, 190, 812, 138, - 141, 690, 691, 1261, 1262, 909, 142, 143, 144, 449, - 305, 1408, 306, 145, 146, 147, 453, 454, 821, 1094, - 453, 454, 1094, 809, 191, 1094, 453, 454, 192, 148, - 149, 490, 1410, 491, 150, 492, 1418, 193, 155, 151, - 156, 152, 1420, 153, 154, 1032, 155, 832, 156, 955, - 649, 956, 214, 215, 194, 1033, 960, 961, 962, 963, - 649, 307, 216, 308, 966, 43, 44, 45, 46, 225, - 1545, 143, 144, 51, 813, 1145, 54, 814, 649, 453, - 454, 198, 292, 293, 294, 295, 143, 144, 453, 454, - 833, 292, 293, 294, 295, 1421, 208, 453, 454, 209, - 296, 297, 296, 297, 1499, 195, 1094, 982, 196, 213, - 197, 296, 297, 1502, 453, 454, 1144, 221, 453, 454, - 233, 649, 1586, 234, 1589, 1015, 1592, 453, 454, 241, - 1505, 869, 1595, 403, 1513, 1373, 994, 649, 995, 655, - 1374, 453, 454, 1515, 242, 245, 871, 1094, 246, 203, - 1094, 247, 204, 1094, 205, 267, 1094, 1575, 901, 901, - 901, 901, 309, 266, 310, 1018, 1019, 1020, 1021, 1625, - 268, 1627, 763, 1629, 269, 311, 1152, 312, 275, 1154, - 1156, 276, 277, 924, 379, 313, 1094, 314, 1094, 315, - 1094, 316, 317, 925, 318, 389, 390, 391, 392, 393, - 278, 926, 927, 928, 394, 983, 279, 929, 930, 931, - 932, 391, 392, 393, 1054, 319, 290, 320, 394, 280, - 924, 7, 8, 199, 358, 321, 200, 322, 351, 201, - 925, 202, 323, 924, 324, 914, 157, 352, 926, 927, - 928, 353, 920, 925, 929, 930, 931, 932, 935, 403, - 354, 926, 927, 928, 325, 355, 326, 929, 930, 931, - 932, 327, 984, 328, 1327, 1328, 329, 356, 330, 612, - 20, 21, 613, 23, 24, 614, 26, 615, 28, 1093, - 29, 331, 357, 332, 33, 34, 359, 36, 37, 38, - 333, 499, 334, 41, 500, 360, 403, 501, 361, 502, - 1161, 335, 403, 336, 373, 403, 403, 403, 649, 993, - 659, 286, 403, 378, 395, 996, 1239, 396, 997, 998, - 999, 649, 337, 665, 338, 1001, 62, 63, 64, 380, + 100, 160, 586, 161, 446, 179, 978, 694, 695, 300, + 1189, 1353, 596, 604, 465, 281, 608, 159, 1100, 1098, + 235, 299, 179, 184, 270, 840, 481, 850, 287, 87, + 283, 184, 231, 495, 232, 166, 1526, 273, 863, 371, + 477, 210, 478, 1182, 1089, 1091, 4, 1093, 1095, 1010, + 454, 455, 454, 455, 211, 212, 296, 297, 218, 220, + 238, 226, 239, 454, 455, 303, 1228, 304, 1229, 5, + 1080, 526, 291, 528, 1396, 175, 214, 215, 163, 1230, + 603, 1231, 176, 101, 102, 103, 216, 1221, 1222, 104, + 105, 106, 162, 217, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 240, 510, 164, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 454, 455, + 165, 138, 139, 140, 468, 851, 852, 853, 854, 454, + 455, 469, 454, 455, 168, 456, 1442, 236, 1090, 1092, + 1363, 1094, 1096, 454, 455, 639, 457, 372, 373, 467, + 640, 404, 404, 169, 454, 455, 1456, 1011, 1012, 689, + 170, 180, 603, 979, 726, 402, 405, 301, 181, 302, + 727, 376, 227, 1098, 156, 171, 641, 282, 180, 864, + 172, 642, 288, 237, 864, 845, 185, 271, 841, 289, + 188, 855, 284, 274, 846, 496, 167, 1527, 479, 1266, + 1267, 141, 292, 293, 294, 295, 173, 142, 143, 144, + 292, 293, 294, 295, 145, 146, 147, 449, 450, 174, + 454, 455, 296, 297, 607, 458, 687, 688, 228, 466, + 148, 149, 229, 454, 455, 150, 1232, 830, 1233, 189, + 151, 834, 152, 230, 153, 154, 703, 155, 177, 156, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 398, 339, 924, 340, 394, 426, 403, - 341, 343, 342, 344, 345, 925, 346, 347, 349, 348, - 350, 415, 1031, 926, 927, 928, 649, 443, 738, 929, - 930, 931, 932, 756, 649, 757, 826, 446, 362, 363, - 364, 366, 369, 649, 649, 829, 949, 715, 649, 649, - 950, 951, 649, 399, 964, 420, 1037, 405, 1038, 1043, - 983, 1044, 649, 1057, 1069, 408, 410, 413, 414, 425, - 416, 410, 418, 419, 428, 410, 422, 423, 447, 649, - 1036, 1112, 410, 649, 649, 1113, 1115, 1247, 649, 649, - 1116, 1117, 649, 924, 1118, 429, 649, 442, 1120, 433, - 1163, 1500, 1164, 925, 438, 1453, 451, 452, 458, 1157, - 1276, 926, 927, 928, 649, 452, 1165, 929, 930, 931, - 932, 649, 649, 1166, 1167, 649, 649, 1168, 1202, 1077, - 1078, 1079, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 504, 506, 410, 1285, - 394, 1286, 1317, 649, 1318, 1352, 439, 513, 514, 515, - 1379, 517, 1380, 479, 520, 521, 440, 481, 522, 383, + 391, 511, 393, 394, 178, 454, 455, 175, 395, 296, + 297, 431, 432, 433, 844, 206, 534, 1344, 207, -452, + 1559, 696, 609, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 182, 750, 454, + 455, 395, 292, 293, 294, 295, 810, 473, 474, 413, + 1364, 811, 454, 455, 418, 702, 454, 455, 422, 486, + 487, 195, 296, 297, 196, 428, 197, 1160, 1076, 833, + 454, 455, 1099, 183, 404, 404, 404, 404, 404, 404, + 404, 404, 404, 404, 404, 404, 1348, 404, 404, 404, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 375, + 1625, 598, 599, 600, 292, 293, 294, 295, 186, 296, + 297, 296, 297, 412, 454, 455, 1118, 187, 412, 454, + 455, -453, 412, 190, 296, 297, 101, 285, 103, 412, + 1411, 813, 104, 105, 106, 1413, 814, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 905, + 906, 907, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 454, 455, 824, 138, 139, 140, 191, 811, 401, + 103, 43, 44, 45, 46, 454, 455, 1415, 193, 51, + 765, 243, 54, 506, 244, 412, 401, 103, 692, 693, + 644, 1423, 194, 645, 187, 914, 450, 292, 293, 294, + 295, 847, 376, 376, 129, 130, 131, 132, 133, 134, + 1463, 305, 1466, 306, 1469, 192, 138, 296, 297, 454, + 455, 129, 130, 131, 132, 133, 134, 454, 455, 601, + 198, 208, 605, 138, 222, 1425, 927, 223, 647, 203, + 224, 645, 204, 1426, 205, 213, 928, 835, 454, 455, + 142, 143, 144, 209, 929, 930, 931, 145, 146, 147, + 932, 933, 934, 935, 1504, 234, 1098, 296, 297, 1098, + 454, 455, 1098, 148, 149, 221, 245, -454, 150, 454, + 455, 927, 812, 257, 233, 811, 1507, 529, 154, 493, + 1186, 928, 103, 412, 156, 1510, 412, 454, 455, 929, + 930, 931, 241, 143, 144, 932, 933, 934, 935, 454, + 455, 246, 242, 1518, 1550, 390, 391, 392, 393, 394, + 143, 144, 836, 267, 395, 1520, 129, 130, 131, 132, + 133, 134, 296, 297, 214, 215, 247, 506, 138, 985, + 454, 455, 268, 637, 216, 638, 718, 719, 720, 266, + 156, 225, 276, 1098, 199, 1019, 1580, 200, 277, 1036, + 201, 380, 202, 872, 651, 404, 1591, 738, 1594, 278, + 1597, 1157, 765, 269, 1159, 1161, 1600, 1097, 491, 874, + 492, 1037, 493, 1148, 1378, 155, 651, 156, 651, 1379, + 904, 904, 904, 904, 1098, 7, 8, 1098, 500, 815, + 1098, 501, 816, 1098, 502, 986, 503, 392, 393, 394, + 412, 412, 412, 1630, 395, 1632, 1149, 1634, 275, 651, + 7, 8, 307, 917, 308, 143, 144, 309, 279, 310, + 923, 412, 311, 1098, 312, 1098, 938, 1098, 744, 313, + 315, 314, 316, 614, 20, 21, 615, 23, 24, 616, + 26, 617, 28, 317, 29, 318, 280, 290, 33, 34, + 353, 36, 37, 38, 651, 354, 652, 41, 614, 20, + 21, 615, 23, 24, 616, 26, 617, 28, 319, 29, + 320, 404, 355, 33, 34, 356, 36, 37, 38, 321, + 357, 322, 41, 358, 323, 987, 324, 1332, 1333, 359, + 62, 63, 64, 866, 360, 868, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 325, 327, 326, 328, 395, 62, 63, 64, 404, 361, + 329, 1166, 330, 362, 404, 404, 374, 397, 404, 404, + 404, 1131, 996, 379, 396, 404, 912, 399, 999, 1000, + 416, 421, 1001, 1002, 1003, 331, 333, 332, 334, 1005, + 335, 717, 336, 426, 427, 7, 8, 412, 337, 412, + 338, 530, 339, 341, 340, 342, 429, 744, 877, 343, + 430, 344, 404, 345, 434, 346, 755, 347, 439, 348, + 958, 349, 959, 350, 444, 440, 1035, 963, 964, 965, + 966, 986, 351, 441, 352, 969, 651, 470, 657, 1040, + 412, 447, 636, 614, 20, 21, 615, 23, 24, 616, + 26, 617, 28, 651, 29, 661, 448, 459, 33, 34, + 460, 36, 37, 38, 651, 471, 667, 41, 461, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 1183, 1285, 469, 1419, 394, 1285, 1466, 1449, 1467, 1503, - 649, 537, 1478, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 1265, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 1285, 595, 1484, - 1486, 394, 1487, 459, 1489, 410, 1490, 1285, 410, 1494, - 649, 649, 1495, 1514, 1379, 649, 1551, 1574, 617, 460, - 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 649, 1285, 1576, 1580, 1604, - 809, 1605, 1607, 649, 403, 1616, 1617, 470, 1618, 504, - 1269, 471, 1285, 1238, 1635, 653, 1640, 1266, 1641, 529, - 658, 475, 482, 483, 484, 663, 664, 1431, 666, 667, - 496, 487, 488, 672, 489, 403, 1293, 493, 677, 678, - 679, 497, 498, 516, 511, 512, 519, 518, 1290, 523, - 524, 526, 532, 536, 535, 1427, 1469, 538, 695, 696, - 697, 362, 363, 698, 394, 608, 1265, 702, 703, 704, - 705, 706, 1322, 609, 610, 711, 155, 662, 713, 714, - 375, 375, 410, 410, 410, 1584, 611, 721, 722, 723, - 668, 728, 669, 1452, 673, 731, 674, 675, 676, 680, - 682, 683, 709, 410, 707, 1296, 710, 684, 712, 739, - 741, 411, 719, 424, 1473, 720, 411, 1363, 729, 730, - 411, 732, 733, 734, 735, 746, 749, 411, 728, 924, - 755, 441, 758, 759, 444, 760, 761, 815, 816, 925, - 817, 1329, 818, 1332, 819, 1335, 820, 926, 927, 928, - 823, 824, 1546, 929, 930, 931, 932, 825, 474, 1346, - 835, 836, 1349, 1350, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 840, 859, - 864, 875, 394, 867, 868, 870, 880, 884, 872, 876, - 877, 505, 879, 411, 881, 882, 885, 886, 890, 895, - 897, 910, 924, 944, 917, 958, 834, 1547, 918, 1550, - 967, 968, 925, 530, 531, 969, 970, 977, 979, 1004, - 926, 927, 928, 534, 1005, 1506, 929, 930, 931, 932, - 1002, 1010, 1011, 924, 1013, 858, 1014, 1017, 410, 1024, - 410, 866, 1025, 925, 1026, 1028, 1030, 156, 741, 873, - 1035, 926, 927, 928, 1041, 1047, 1052, 929, 930, 931, - 932, 375, 887, 1053, 1048, 1055, 1056, 1059, 893, 1597, - 1060, 1061, 1062, 900, 900, 900, 900, 1065, 1063, 1064, - 1066, 410, 1067, 1068, 1070, 1080, 1084, 1082, 915, 916, - 1081, 1083, 1124, 1097, 919, 1098, 924, 1099, 1571, 1103, - 411, 1100, 1101, 411, 7, 8, 925, 943, 1104, 1105, - 945, 1106, 1107, 1109, 926, 927, 928, 1110, 1129, 1130, - 929, 930, 931, 932, 1457, 410, 1460, 410, 1463, 1609, - 1132, 1133, 410, 410, 410, 410, 1471, 1134, 1135, 1474, - 410, 1146, 1147, 1148, 505, 1158, 1159, 971, 1169, 973, - 974, 1176, 612, 20, 21, 613, 23, 24, 614, 26, - 615, 28, 1149, 29, 924, 1179, 1175, 33, 34, 1151, - 36, 37, 38, 1187, 925, 1191, 41, 1174, 1185, 1558, - 1561, 1194, 926, 927, 928, 1195, 985, 986, 929, 930, - 931, 932, 1611, 1186, 1192, 1193, 1197, 1198, 1199, 1200, - 1205, 1206, 987, 988, 989, 990, 991, 992, 1208, 62, - 63, 64, 410, 1209, 410, 1210, 403, 411, 411, 411, - 1211, 1215, 1221, 1000, 1229, 1233, 1234, 1003, 1222, 1235, - 1236, 1009, 1243, 1549, 1244, 403, 1251, 1248, 411, 1252, - 1253, 410, 410, 410, 410, 742, 1022, 1254, 1600, 1255, - 1256, 1260, 7, 8, 1263, 1264, 1271, 1272, 1274, 924, - 1613, 1622, 1277, 1278, 1279, 1280, 1289, 1297, 1304, 925, - 753, 1298, 1299, 1302, 403, 1305, 403, 926, 927, 928, - 7, 8, 1307, 929, 930, 931, 932, 1631, 1308, 1634, - 410, 1643, 1311, 1306, 1316, 1319, 1330, 403, 1333, 1336, - 612, 20, 21, 613, 23, 24, 614, 26, 615, 28, - 1647, 29, 1340, 1344, 1347, 33, 34, 1351, 36, 37, - 38, 1354, 1365, 1366, 41, 1367, 1368, 828, 612, 20, - 21, 613, 23, 24, 614, 26, 615, 28, 1370, 29, - 1371, 1372, 1378, 33, 34, 1381, 36, 37, 38, 1390, - 1398, 1108, 41, 1393, 1111, 1615, 1394, 62, 63, 64, - 1392, 1395, 1396, 1397, 1401, 1119, 1402, 1413, 1404, 1415, - 1422, 1405, 1429, 411, 1407, 411, 1409, 1411, 1432, 1416, - 1424, 1430, 924, 742, 874, 62, 63, 64, 634, 1439, - 1443, 1444, 925, 1445, 894, 1446, 1447, 1448, 1450, 1465, - 926, 927, 928, 924, 1472, 908, 929, 930, 931, 932, - 1479, 1480, 1481, 925, 1162, 1492, 411, 1496, 754, 1508, - 1509, 926, 927, 928, 1170, 1171, 1517, 929, 930, 931, - 932, 1512, 1524, 1525, 1180, 1182, 1528, 1529, 1531, 1534, - 1535, 1538, 1539, 1542, 1548, 1569, 912, 1577, 1543, 1563, - 1565, 1567, 1578, 1587, 1590, 1593, 7, 8, 1596, 1598, - 411, 1602, 411, 1603, 1610, 1623, 1624, 411, 411, 411, - 411, 1612, 1218, 1219, 1220, 411, 1614, 1626, 1637, 1619, - 1628, 978, 1230, 1630, 1232, 1632, 1642, 1644, 1645, 1646, - 1648, 1189, 1518, 1178, 646, 1237, 86, 94, 1273, 1638, - 671, 0, 0, 410, 612, 20, 21, 613, 23, 24, - 614, 26, 615, 28, 0, 29, 0, 0, 0, 33, - 34, 0, 36, 37, 38, 1257, 1258, 1259, 41, 0, - 0, 0, 0, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 411, 0, 411, - 0, 394, 0, 0, 0, 0, 1270, 0, 0, 0, - 0, 62, 63, 64, 0, 0, 0, 0, 0, 1282, - 0, 0, 0, 0, 1288, 0, 411, 411, 411, 411, - 0, 1292, 0, 7, 8, 1294, 1295, 0, 0, 0, - 0, 0, 1300, 1301, 0, 0, 0, 1303, 0, 0, - 0, 1039, 1040, 0, 1042, 1310, 1045, 1046, 0, 0, - 1049, 1050, 0, 0, 0, 1320, 0, 1321, 0, 0, - 0, 0, 913, 0, 0, 411, 0, 0, 0, 1338, - 0, 612, 20, 21, 613, 23, 24, 614, 26, 615, - 28, 410, 29, 0, 0, 410, 33, 34, 1353, 36, - 37, 38, 0, 0, 0, 41, 0, 0, 0, 0, - 0, 0, 1362, 7, 8, 0, 0, 0, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 1375, 1376, 0, 394, 0, 62, 63, - 64, 1382, 1121, 1122, 1123, 845, 0, 0, 0, 0, - 0, 0, 1131, 0, 0, 0, 0, 0, 0, 0, - 822, 612, 20, 21, 613, 23, 24, 614, 26, 615, - 28, 0, 29, 0, 0, 1403, 33, 34, 0, 36, - 37, 38, 0, 0, 0, 41, 0, 0, 0, 0, - 0, 0, 0, 1417, 0, 504, 0, 0, 0, 936, - 0, 1173, 0, 0, 0, 0, 1425, 0, 1426, 0, - 0, 410, 0, 0, 0, 0, 1190, 0, 62, 63, - 64, 0, 1196, 0, 1434, 0, 0, 0, 1201, 1438, - 1203, 1204, 0, 0, 0, 1207, 0, 0, 0, 0, - 1212, 1213, 1214, 0, 1012, 0, 0, 0, 0, 410, - 0, 0, 0, 0, 0, 0, 1456, 1231, 1459, 0, - 1462, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 410, 0, 1242, 0, 1475, 0, 1246, 0, 0, 972, - 0, 0, 0, 0, 0, 1482, 1483, 0, 411, 0, - 1485, 0, 0, 0, 1051, 0, 0, 0, 0, 0, - 1493, 0, 0, 0, 1497, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 509, - 0, 0, 0, 394, 0, 0, 0, 1267, 0, 1268, - 0, 1288, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1526, 0, 0, 0, 0, 0, 0, 1533, - 0, 0, 1537, 0, 0, 1541, 0, 0, 0, 1544, - 0, 0, 0, 410, 0, 410, 0, 0, 0, 0, - 1553, 0, 0, 1555, 0, 1560, 0, 0, 0, 0, - 0, 0, 0, 1312, 1313, 1314, 1315, 0, 0, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 1583, 394, 0, 0, - 0, 0, 1585, 0, 0, 0, 0, 0, 1173, 0, - 0, 0, 0, 0, 0, 410, 411, 0, 0, 0, - 411, 1355, 0, 0, 0, 0, 0, 0, 1364, 380, + 394, 1162, 472, 476, 412, 395, 412, 480, 1081, 1082, + 1083, 412, 412, 412, 412, 651, 758, 740, 759, 412, + 62, 63, 64, 651, 651, 829, 832, 997, 1458, 998, + 482, 651, 1281, 952, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 651, 651, + 953, 954, 395, 651, 1132, 967, 483, 1022, 1023, 1024, + 1025, 1041, 1047, 1042, 1048, 484, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 488, 756, 7, 8, 395, 651, 651, 1073, 1116, 485, + 651, 412, 1117, 412, 651, 651, 1119, 1120, 157, 651, + 651, 1121, 1122, 651, 1188, 1124, 1058, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 412, 412, 412, 412, 395, 1168, 489, 1169, 1270, + 614, 20, 21, 615, 23, 24, 616, 26, 617, 28, + 490, 29, 927, 494, 497, 33, 34, 498, 36, 37, + 38, 651, 928, 1170, 41, 651, 651, 1171, 1172, 499, + 929, 930, 931, 651, 512, 1173, 932, 933, 934, 935, + 412, 513, 520, 286, 651, 1290, 1207, 1291, 1322, 651, + 1323, 1357, 1384, 1243, 1385, 101, 285, 62, 63, 64, + 517, 104, 105, 106, 519, 524, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 1290, 404, + 1424, 1290, 1471, 1454, 1472, 1274, 525, 135, 136, 137, + 651, 527, 1483, 1271, 139, 140, 533, 536, 1244, 1436, + 363, 364, 365, 367, 370, 1290, 537, 1489, 915, 1270, + 404, 1298, 1491, 539, 1492, 400, 1494, 395, 1495, 406, + 1290, 651, 1499, 1500, 1295, 610, 611, 409, 411, 414, + 415, 612, 417, 411, 419, 420, 1301, 411, 423, 424, + 1474, 651, 613, 1519, 411, 155, 664, 1327, 1589, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 1384, 443, + 1556, 651, 395, 1579, 651, 1290, 1581, 1585, 452, 453, + 670, 1609, 1334, 1610, 1337, 671, 1340, 453, 675, 142, + 1252, 676, 376, 376, 682, 677, 145, 146, 147, 811, + 1351, 1612, 1368, 1354, 1355, 651, 1622, 1621, 1623, 1290, + 678, 1640, 148, 149, 1645, 685, 1646, 150, 505, 507, + 411, 684, 257, 686, 927, 709, 711, 154, 712, 514, + 515, 516, 714, 518, 928, 721, 521, 522, 722, 731, + 523, 732, 929, 930, 931, 734, 1551, 735, 932, 933, + 934, 935, 736, 737, 412, 748, 751, 757, 761, 762, + 817, 818, 819, 538, 820, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 1505, 597, 821, 822, 395, 827, 823, 826, 411, 828, + 838, 411, 839, 843, 862, 867, 871, 870, 878, 873, + 883, 619, 875, 620, 621, 622, 623, 624, 625, 626, + 627, 628, 629, 630, 631, 632, 633, 634, 879, 880, + 882, 884, 885, 887, 888, 1462, 893, 1465, 898, 1468, + 889, 900, 505, 376, 913, 920, 921, 1476, 655, 947, + 1479, 961, 970, 660, 971, 972, 973, 980, 665, 666, + 927, 668, 669, 412, 982, 1006, 674, 412, 1008, 1014, + 928, 679, 680, 681, 1009, 1015, 1018, 1017, 929, 930, + 931, 1021, 1028, 1029, 932, 933, 934, 935, 1030, 1032, + 1034, 697, 698, 699, 363, 364, 700, 156, 1039, 1045, + 704, 705, 706, 707, 708, 1051, 1052, 1056, 713, 1057, + 1059, 715, 716, 927, 1060, 411, 411, 411, 1063, 1432, + 723, 724, 725, 928, 730, 1064, 1065, 1066, 733, 1067, + 1068, 929, 930, 931, 1563, 1566, 411, 932, 933, 934, + 935, 1069, 741, 743, 1554, 1070, 1071, 1072, 1074, 1084, + 1086, 1088, 1085, 1087, 1107, 1101, 1508, 1457, 1102, 1111, + 1103, 730, 927, 1104, 1105, 760, 1108, 506, 1109, 763, + 1110, 404, 928, 1113, 1114, 1128, 1133, 1134, 1478, 1138, + 929, 930, 931, 412, 1136, 1137, 932, 933, 934, 935, + 404, 1139, 1151, 1152, 1163, 1164, 1181, 1150, 1184, 1153, + 825, 1154, 1192, 1156, 1605, 1196, 1174, 1199, 1200, 1511, + 1203, 1204, 1205, 1180, 1179, 1210, 1627, 425, 1190, 1191, + 1211, 412, 1213, 1197, 1214, 1215, 1198, 1202, 1216, 404, + 1220, 404, 1226, 1227, 1238, 442, 1234, 1239, 445, 1240, + 837, 1241, 412, 1636, 1248, 1639, 1648, 1256, 1249, 1253, + 1257, 1259, 404, 1016, 1258, 1260, 1261, 1265, 1576, 1269, + 1268, 1276, 475, 1277, 1279, 1309, 1652, 1282, 927, 861, + 1283, 1552, 411, 1555, 411, 869, 1284, 1285, 928, 927, + 1294, 1302, 743, 876, 1303, 1304, 929, 930, 931, 928, + 1307, 1310, 932, 933, 934, 935, 890, 929, 930, 931, + 1311, 1312, 896, 932, 933, 934, 935, 903, 903, 903, + 903, 1316, 1313, 1321, 1324, 411, 1335, 531, 532, 1338, + 1341, 1349, 918, 919, 1352, 1345, 1356, 535, 922, 1359, + 1370, 1371, 1372, 1602, 1373, 412, 1375, 412, 1376, 1377, + 1383, 946, 1386, 1395, 948, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 411, + 1397, 411, 1398, 395, 1614, 1399, 411, 411, 411, 411, + 1400, 1401, 1402, 1403, 411, 1616, 1406, 1407, 412, 1418, + 1412, 974, 1420, 976, 977, 1427, 1409, 1410, 1429, 1414, + 1416, 1434, 1437, 1421, 1444, 1448, 1449, 412, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 1435, 1450, 1451, 1452, 395, 1453, 1455, 1470, + 988, 989, 1477, 1484, 1485, 927, 1501, 1513, 1514, 1486, + 1522, 1497, 1529, 1517, 1530, 928, 990, 991, 992, 993, + 994, 995, 1533, 929, 930, 931, 411, 1534, 411, 932, + 933, 934, 935, 1536, 1539, 1540, 1055, 1543, 1004, 1544, + 1547, 1548, 1007, 1553, 1568, 1570, 1013, 1572, 1574, 1582, + 1583, 1592, 1595, 1598, 1601, 1603, 411, 411, 411, 411, + 1607, 1026, 1608, 1615, 101, 248, 1617, 1183, 1619, 1624, + 104, 105, 106, 1628, 1629, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 250, 1631, 1633, + 1635, 1618, 1637, 1647, 1649, 411, 135, 136, 137, 1650, + 1651, 1653, 1523, 139, 140, 1194, 648, 86, 927, 94, + 0, 251, 673, 0, 252, 1278, 0, 253, 928, 254, + 0, 0, 0, 0, 0, 0, 929, 930, 931, 0, + 255, 0, 932, 933, 934, 935, 0, 43, 44, 45, + 46, 47, 927, 0, 0, 51, 0, 0, 54, 0, + 0, 0, 928, 0, 0, 0, 1112, 0, 0, 1115, + 929, 930, 931, 0, 0, 1106, 932, 933, 934, 935, + 1123, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 142, 395, + 1158, 0, 0, 0, 0, 145, 146, 147, 0, 7, + 8, 0, 0, 831, 1620, 0, 0, 0, 0, 0, + 0, 462, 1350, 0, 0, 0, 150, 0, 0, 0, + 1167, 464, 0, 0, 0, 0, 154, 0, 217, 508, + 1175, 1176, 0, 0, 0, 0, 0, 0, 1642, 0, + 1185, 1187, 0, 0, 0, 0, 0, 614, 20, 21, + 615, 23, 24, 616, 26, 617, 28, 0, 29, 0, + 0, 0, 33, 34, 0, 36, 37, 38, 0, 0, + 897, 41, 0, 927, 0, 0, 0, 0, 1223, 1224, + 1225, 911, 0, 928, 0, 0, 0, 0, 1235, 0, + 1237, 929, 930, 931, 0, 0, 0, 932, 933, 934, + 935, 1242, 0, 0, 62, 63, 64, 0, 0, 411, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 1621, 0, 0, 394, 0, 0, - 1377, 0, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 510, 392, 393, 101, 248, 0, 0, - 394, 1173, 104, 105, 106, 0, 0, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 250, - 0, 0, 0, 0, 0, 1414, 0, 0, 135, 136, - 137, 0, 0, 0, 924, 139, 140, 0, 0, 0, - 505, 0, 0, 251, 925, 0, 252, 0, 0, 253, - 0, 254, 926, 927, 928, 0, 411, 0, 929, 930, - 931, 932, 255, 1173, 0, 0, 0, 0, 0, 43, - 44, 45, 46, 47, 0, 0, 0, 51, 0, 0, - 54, 0, 0, 1173, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 411, 0, 0, 0, 0, 0, - 1468, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 411, 0, 0, 0, 394, - 142, 737, 0, 0, 0, 0, 688, 145, 146, 147, - 1639, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 148, 409, 0, 0, 394, 150, 0, - 0, 1507, 0, 257, 0, 0, 0, 0, 154, 0, - 0, 507, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 285, 0, 0, 0, 0, 104, 105, 106, 0, - 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 0, 0, 0, 0, 1173, 411, 1557, - 411, 0, 135, 136, 137, 0, 101, 248, 103, 139, - 140, 0, 104, 105, 106, 0, 0, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 250, - 0, 411, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 0, 0, 0, 138, 139, 140, 0, 0, 0, - 411, 0, 0, 251, 0, 0, 252, 0, 0, 253, - 0, 254, 0, 0, 0, 0, 0, 1173, 0, 0, - 0, 0, 255, 0, 0, 0, 0, 0, 0, 43, - 44, 45, 46, 47, 142, 0, 0, 51, 0, 0, - 54, 145, 146, 147, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 148, 149, 0, - 0, 0, 150, 0, 0, 0, 0, 257, 0, 0, - 367, 0, 154, 0, 368, 0, 0, 0, 0, 0, - 142, 143, 144, 0, 0, 0, 0, 145, 146, 147, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 0, 1262, 1263, 1264, 0, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 981, 0, 0, + 0, 0, 0, 1275, 0, 916, 0, 0, 0, 1643, + 0, 0, 0, 0, 0, 0, 1287, 0, 0, 0, + 0, 1293, 0, 0, 0, 0, 0, 0, 1297, 0, + 7, 8, 1299, 1300, 0, 0, 0, 0, 0, 1305, + 1306, 0, 0, 0, 1308, 0, 0, 927, 0, 0, + 0, 0, 1315, 0, 0, 0, 0, 928, 0, 0, + 0, 0, 1325, 0, 1326, 929, 930, 931, 0, 0, + 0, 932, 933, 934, 935, 0, 1343, 0, 614, 20, + 21, 615, 23, 24, 616, 26, 617, 28, 411, 29, + 0, 0, 411, 33, 34, 1358, 36, 37, 38, 0, + 0, 0, 41, 0, 0, 0, 0, 7, 8, 1367, + 0, 0, 0, 0, 0, 0, 0, 0, 1043, 1044, + 0, 1046, 0, 1049, 1050, 0, 0, 1053, 1054, 0, + 1380, 1381, 0, 0, 0, 62, 63, 64, 1387, 0, + 0, 0, 0, 1644, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 614, 20, 21, 615, 23, + 24, 616, 26, 617, 28, 0, 29, 1611, 510, 0, + 33, 34, 1408, 36, 37, 38, 0, 0, 0, 41, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1422, 0, 505, 0, 0, 0, 939, 0, 0, 0, + 0, 0, 0, 1430, 0, 1431, 0, 0, 411, 1125, + 1126, 1127, 62, 63, 64, 0, 0, 0, 0, 1135, + 0, 1439, 0, 0, 0, 0, 1443, 0, 1165, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 411, 395, 0, 0, + 0, 0, 0, 1461, 1330, 1464, 1331, 1467, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 411, 0, 1178, + 0, 1480, 0, 975, 0, 0, 0, 0, 0, 0, + 0, 0, 1487, 1488, 1195, 0, 0, 1490, 0, 0, + 1201, 0, 0, 0, 0, 0, 1206, 1498, 1208, 1209, + 0, 1502, 0, 1212, 0, 0, 0, 0, 1217, 1218, + 1219, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 650, 393, 394, 1236, 0, 1254, 1293, 395, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1531, + 1247, 0, 0, 0, 1251, 0, 1538, 0, 0, 1542, + 0, 0, 1546, 0, 0, 0, 1549, 0, 0, 0, + 411, 0, 411, 1374, 7, 8, 0, 1558, 0, 0, + 1560, 0, 1565, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 1641, 0, 0, + 0, 395, 0, 0, 0, 0, 1272, 0, 1273, 0, + 0, 0, 0, 1588, 0, 0, 0, 0, 0, 1590, + 0, 0, 614, 20, 21, 615, 23, 24, 616, 26, + 617, 28, 411, 29, 0, 0, 0, 33, 34, 0, + 36, 37, 38, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 148, 256, 0, 0, 0, 150, 0, - 0, 0, 0, 257, 0, 101, 248, 249, 154, 0, - 1556, 104, 105, 106, 0, 0, 107, 108, 109, 110, + 0, 1626, 1317, 1318, 1319, 1320, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, + 63, 64, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 1178, 0, 0, + 395, 0, 0, 0, 0, 0, 0, 0, 1405, 0, + 1360, 0, 0, 0, 0, 0, 0, 1369, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 510, 0, 0, 0, 395, 0, 0, 1382, + 1075, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 101, 248, 0, 0, 395, + 1178, 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 250, 0, - 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, - 0, 0, 0, 0, 139, 140, 0, 0, 0, 7, - 8, 0, 251, 0, 0, 252, 0, 0, 253, 0, + 0, 0, 0, 0, 1419, 0, 0, 135, 136, 137, + 0, 0, 0, 0, 139, 140, 0, 0, 0, 0, + 0, 0, 251, 0, 0, 252, 0, 0, 253, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 255, 0, 0, 0, 0, 0, 0, 43, 44, + 0, 255, 1178, 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, 51, 0, 0, 54, - 0, 0, 0, 0, 0, 0, 0, 612, 20, 21, - 613, 23, 24, 614, 26, 615, 28, 0, 29, 0, - 0, 0, 33, 34, 0, 36, 37, 38, 0, 0, - 0, 41, 0, 0, 0, 0, 0, 0, 0, 142, - 0, 0, 0, 0, 0, 0, 145, 146, 147, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 148, 256, 62, 63, 64, 150, 0, 0, - 0, 0, 257, 0, 101, 248, 1240, 154, 0, 258, - 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 250, 0, 0, - 0, 0, 0, 0, 0, 0, 135, 136, 137, 0, - 0, 0, 0, 139, 140, 1071, 0, 0, 7, 8, - 0, 251, 0, 0, 252, 0, 0, 253, 0, 254, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 255, 0, 0, 0, 0, 0, 0, 43, 44, 45, - 46, 47, 0, 0, 0, 51, 0, 0, 54, 0, - 0, 0, 0, 0, 0, 0, 612, 20, 21, 613, - 23, 24, 614, 26, 615, 28, 0, 29, 0, 0, - 0, 33, 34, 0, 36, 37, 38, 0, 0, 0, - 41, 0, 0, 0, 0, 0, 0, 0, 142, 0, - 0, 0, 0, 0, 0, 145, 146, 147, 0, 0, + 0, 0, 1178, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 1473, + 0, 395, 0, 0, 0, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 511, 393, 394, 142, + 0, 0, 0, 395, 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 148, 256, 62, 63, 64, 150, 0, 0, 0, - 0, 257, 0, 101, 248, 0, 154, 0, 1241, 104, - 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 250, 0, 0, 0, - 0, 0, 0, 0, 0, 135, 136, 137, 0, 0, - 0, 0, 139, 140, 1510, 0, 0, 7, 8, 0, - 251, 0, 0, 252, 0, 0, 253, 0, 254, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, - 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, - 47, 0, 0, 0, 51, 0, 0, 54, 0, 0, - 0, 0, 0, 0, 0, 612, 20, 21, 613, 23, - 24, 614, 26, 615, 28, 0, 29, 0, 0, 0, - 33, 34, 1102, 36, 37, 38, 0, 0, 0, 41, - 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, - 0, 1153, 0, 0, 145, 146, 147, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 148, 256, 62, 63, 64, 150, 0, 0, 0, 0, - 257, 0, 101, 248, 0, 154, 0, 258, 104, 105, - 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 250, 0, 0, 0, 0, - 0, 0, 0, 0, 135, 136, 137, 0, 0, 0, - 0, 139, 140, 1572, 0, 0, 0, 0, 0, 251, - 0, 0, 252, 0, 0, 253, 0, 254, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, - 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 0, 0, 0, 51, 0, 0, 54, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 1160, 0, 0, 0, 394, 0, 142, 0, 0, 0, - 0, 0, 0, 145, 146, 147, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, - 409, 0, 0, 0, 150, 0, 0, 0, 0, 257, - 0, 101, 248, 0, 154, 0, 503, 104, 105, 106, + 0, 0, 148, 410, 0, 0, 0, 150, 0, 0, + 1512, 0, 257, 0, 0, 0, 0, 154, 0, 0, + 508, 101, 248, 103, 0, 0, 0, 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 250, 0, 0, 0, 0, 0, - 0, 0, 0, 135, 136, 137, 0, 0, 0, 0, - 139, 140, 0, 0, 0, 0, 0, 0, 251, 0, + 125, 126, 127, 128, 250, 0, 0, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 1178, 0, 1562, 138, + 139, 140, 0, 0, 0, 7, 8, 0, 251, 0, 0, 252, 0, 0, 253, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, 51, 0, 0, 54, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 1249, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 142, 0, 0, 0, 1369, + 0, 0, 0, 614, 20, 21, 615, 23, 24, 616, + 26, 617, 28, 0, 29, 0, 0, 0, 33, 34, + 0, 36, 37, 38, 0, 0, 1178, 41, 0, 0, + 0, 0, 0, 0, 0, 142, 143, 144, 0, 0, 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 148, 409, - 0, 0, 0, 150, 0, 0, 0, 0, 257, 0, - 101, 248, 0, 154, 0, 740, 104, 105, 106, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 148, 256, + 62, 63, 64, 150, 0, 0, 0, 0, 257, 0, + 101, 248, 249, 154, 0, 1561, 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 250, 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, 0, 0, 0, 0, 139, - 140, 0, 0, 0, 0, 0, 0, 251, 0, 0, + 140, 1515, 0, 0, 7, 8, 0, 251, 0, 0, 252, 0, 0, 253, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, - 0, 51, 0, 0, 54, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 1400, 0, - 0, 0, 394, 0, 142, 0, 0, 0, 0, 0, + 0, 51, 0, 0, 54, 0, 0, 0, 0, 0, + 0, 0, 614, 20, 21, 615, 23, 24, 616, 26, + 617, 28, 0, 29, 0, 0, 0, 33, 34, 1433, + 36, 37, 38, 0, 0, 0, 41, 0, 0, 0, + 0, 0, 0, 0, 142, 0, 0, 0, 1521, 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 148, 256, 0, - 0, 0, 150, 0, 0, 0, 0, 257, 0, 101, - 248, 0, 154, 0, 1245, 104, 105, 106, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 148, 256, 62, + 63, 64, 150, 0, 0, 0, 0, 257, 0, 101, + 248, 1245, 154, 0, 258, 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 250, 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, 0, 0, 0, 0, 139, 140, - 0, 0, 0, 0, 0, 0, 251, 0, 0, 252, + 1577, 0, 0, 0, 0, 0, 251, 0, 0, 252, 0, 0, 253, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, - 51, 0, 0, 54, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 1428, - 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 142, 0, 0, 0, 0, 1516, 0, + 51, 0, 0, 54, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 1575, 0, 0, + 0, 395, 0, 142, 0, 0, 0, 0, 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 461, 1345, 0, 0, - 0, 150, 0, 0, 0, 0, 463, 0, 101, 285, - 103, 154, 0, 217, 104, 105, 106, 0, 0, 107, + 0, 0, 0, 0, 0, 0, 148, 256, 0, 0, + 0, 150, 0, 0, 0, 0, 257, 0, 101, 248, + 0, 154, 0, 1246, 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 0, 0, 0, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 101, 285, 103, 138, 139, 140, 104, - 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 0, 0, 0, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 0, 0, - 0, 138, 139, 140, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 142, 143, 144, 0, 0, 0, 0, 145, + 128, 250, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 136, 137, 0, 0, 0, 0, 139, 140, 0, + 0, 0, 0, 0, 0, 251, 0, 0, 252, 0, + 0, 253, 0, 254, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, + 0, 43, 44, 45, 46, 47, 0, 0, 0, 51, + 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 510, + 395, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 0, 0, 0, 0, 0, 752, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 148, 149, 0, 0, 0, - 150, 0, 0, 0, 0, 257, 0, 0, 0, 0, - 154, 0, 1181, 0, 0, 0, 0, 142, 143, 144, - 0, 0, 0, 0, 145, 146, 147, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 148, 149, 0, 0, 0, 150, 0, 0, 0, 0, - 257, 0, 101, 285, 103, 154, 0, 1361, 104, 105, - 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 0, 0, 0, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 101, 285, 0, - 138, 139, 140, 104, 105, 106, 0, 0, 107, 108, + 0, 0, 0, 0, 0, 148, 256, 0, 0, 0, + 150, 0, 0, 0, 0, 257, 0, 101, 248, 0, + 154, 0, 258, 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 136, 137, 0, 0, 0, 0, 139, 140, 101, 285, - 0, 0, 0, 0, 104, 105, 106, 0, 0, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 0, 0, 0, 0, 0, 142, 143, 144, 0, - 135, 136, 137, 145, 146, 147, 0, 139, 140, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, - 149, 0, 0, 0, 150, 0, 0, 0, 0, 257, - 0, 0, 0, 0, 154, 0, 1559, 0, 0, 0, + 250, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 137, 0, 0, 0, 0, 139, 140, 0, 0, + 0, 0, 0, 0, 251, 0, 0, 252, 0, 0, + 253, 0, 254, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, + 43, 44, 45, 46, 47, 0, 0, 0, 51, 0, + 0, 54, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 650, 393, 394, 0, 0, 0, 0, + 395, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 849, 0, 0, 0, 395, 0, 142, 0, 0, 0, 0, 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 148, 149, 0, 0, 0, 150, - 0, 0, 0, 0, 257, 0, 0, 726, 0, 154, - 0, 727, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 142, 0, 0, 0, 0, 0, 0, 145, + 0, 0, 0, 0, 148, 410, 0, 0, 0, 150, + 0, 0, 0, 0, 257, 0, 101, 248, 0, 154, + 0, 504, 104, 105, 106, 0, 0, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 250, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, + 137, 0, 0, 0, 0, 139, 140, 0, 0, 0, + 0, 0, 0, 251, 0, 0, 252, 0, 0, 253, + 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 0, 0, 0, 0, 0, 0, 43, + 44, 45, 46, 47, 0, 0, 0, 51, 0, 0, + 54, 0, 0, 0, 0, 0, 0, 0, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 0, 0, 0, 0, 395, 968, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 142, 0, 0, 0, 0, 0, 1130, 145, 146, 147, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 148, 410, 0, 0, 0, 150, 0, + 0, 0, 0, 257, 0, 101, 248, 0, 154, 0, + 742, 104, 105, 106, 0, 0, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 250, 0, + 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, + 0, 0, 0, 0, 139, 140, 0, 0, 0, 0, + 0, 0, 251, 0, 0, 252, 0, 0, 253, 0, + 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 0, 0, 0, 0, 0, 0, 43, 44, + 45, 46, 47, 0, 0, 0, 51, 0, 0, 54, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 142, + 0, 0, 0, 0, 0, 0, 145, 146, 147, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 148, 256, 0, 0, 0, 150, 0, 0, + 0, 0, 257, 0, 101, 248, 0, 154, 0, 1250, + 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 250, 0, 0, + 0, 0, 0, 0, 0, 0, 135, 136, 137, 0, + 0, 7, 8, 139, 140, 1061, 0, 0, 0, 0, + 0, 251, 0, 0, 252, 0, 0, 253, 0, 254, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 255, 0, 0, 0, 0, 0, 0, 43, 44, 45, + 46, 47, 0, 0, 0, 51, 0, 0, 54, 614, + 20, 21, 615, 23, 24, 616, 26, 617, 28, 0, + 29, 0, 0, 0, 33, 34, 0, 36, 37, 38, + 0, 0, 0, 41, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 142, 0, + 0, 0, 395, 0, 0, 145, 146, 147, 0, 0, + 0, 0, 0, 0, 0, 0, 62, 63, 64, 0, + 0, 462, 1350, 0, 0, 0, 150, 0, 0, 0, + 0, 464, 0, 101, 285, 103, 154, 0, 217, 104, + 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 0, 0, 0, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 101, 285, + 103, 138, 139, 140, 104, 105, 106, 0, 0, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 0, 0, 0, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 0, 0, 0, 138, 139, 140, 101, + 285, 0, 0, 0, 0, 104, 105, 106, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 0, 0, 0, 0, 0, 142, 143, 144, + 0, 135, 136, 137, 145, 146, 147, 0, 139, 140, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 148, 149, 0, 0, 0, 150, 0, 0, 0, 0, + 257, 0, 0, 0, 0, 154, 0, 1366, 0, 0, + 0, 0, 142, 143, 144, 0, 0, 0, 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 149, 0, 0, 0, - 150, 0, 0, 0, 0, 257, 0, 101, 285, 0, - 154, 0, 365, 104, 105, 106, 0, 0, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 136, 137, 101, 248, 0, 0, 139, 140, 104, 105, - 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 250, 0, 0, 0, 0, - 0, 0, 0, 0, 135, 136, 137, 0, 0, 0, - 0, 139, 140, 0, 0, 0, 0, 0, 0, 251, - 0, 0, 252, 0, 0, 253, 0, 254, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, - 0, 0, 0, 0, 0, 43, 44, 45, 46, 47, - 0, 142, 0, 51, 0, 0, 54, 0, 145, 146, - 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 461, 462, 1570, 0, 0, 150, - 0, 0, 0, 0, 463, 0, 0, 0, 0, 154, - 0, 217, 0, 0, 0, 0, 142, 0, 0, 0, - 1606, 509, 0, 145, 146, 147, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, - 409, 0, 0, 0, 150, 101, 285, 103, 0, 257, - 0, 104, 105, 106, 154, 0, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, - 0, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 101, 285, 0, 138, 139, 140, 104, 105, 106, 0, + 150, 0, 0, 0, 0, 257, 0, 0, 0, 0, + 154, 0, 1564, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, + 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 148, 149, 0, 0, + 0, 150, 0, 0, 0, 0, 257, 0, 0, 368, + 0, 154, 0, 369, 101, 285, 0, 0, 0, 0, + 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 135, 136, 137, 101, + 285, 0, 0, 139, 140, 104, 105, 106, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 135, 136, 137, 0, 0, 0, 0, 139, 140, + 101, 285, 0, 0, 0, 0, 104, 105, 106, 0, 0, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 1636, 0, 0, 0, 0, 0, 0, - 0, 0, 135, 136, 137, 0, 0, 0, 0, 139, - 140, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 509, 0, 0, 0, 394, - 0, 0, 0, 0, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 648, 392, 393, 750, 142, - 143, 144, 394, 0, 0, 0, 145, 146, 147, 0, - 0, 0, 0, 0, 0, 0, 0, 846, 0, 0, - 0, 0, 148, 149, 0, 0, 0, 150, 0, 0, - 0, 0, 257, 0, 0, 0, 965, 154, 0, 0, + 126, 127, 128, 0, 0, 0, 0, 0, 142, 0, + 0, 0, 135, 136, 137, 145, 146, 147, 0, 139, + 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 148, 149, 0, 0, 0, 150, 0, 0, 0, + 0, 257, 0, 0, 728, 0, 154, 0, 729, 0, + 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, + 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 148, 149, 0, 0, + 0, 150, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 154, 0, 366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, - 0, 145, 146, 147, 0, 1126, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 148, 149, 0, - 0, 0, 150, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 154, 0, 0, 0, 0, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 648, - 392, 393, 0, 0, 0, 0, 394, 0, 0, 0, - 0, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, -4, 1, 0, 394, -4, 0, 0, - 0, 0, 0, 0, 0, -4, -4, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - -4, -4, 1325, 0, 1326, 0, 0, 0, 0, 0, - 0, -4, -4, -4, 0, 0, 0, -4, -4, -4, - 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, - -4, -4, -4, 0, -4, -4, -4, -4, -4, -4, - -4, -4, -4, -4, -4, 0, -4, -4, -4, -4, - -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, - -4, -4, -4, 0, 0, 0, -4, -4, -4, 0, - 0, 0, 0, 0, -4, 6, 0, 0, 0, -4, - -4, -4, -4, 7, 8, -4, 0, -4, 0, -4, + 0, 145, 146, 147, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 462, 463, 0, + 0, 0, 150, 0, 0, 0, 0, 464, 0, 101, + 248, 0, 154, 0, 217, 104, 105, 106, 0, 0, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 250, 0, 0, 0, 0, 0, 0, 0, + 0, 135, 136, 137, 0, 0, 0, 0, 139, 140, + 0, 0, 0, 0, 0, 0, 251, 0, 0, 252, + 0, 0, 253, 0, 254, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, + 0, 0, 43, 44, 45, 46, 47, 0, 0, 0, + 51, 0, 0, 54, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 0, 0, 0, 0, 0, 1361, + 0, 1362, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, + 145, 146, 147, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 148, 410, 0, 0, + 0, 150, 101, 285, 103, 0, 257, 0, 104, 105, + 106, 154, 0, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 0, 0, 0, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 0, 0, 0, + 138, 139, 140, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 1459, 0, + 1460, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 0, 0, 848, 0, + 0, 0, 0, 0, 0, 0, 0, -4, 1, 0, + 0, -4, 0, 0, 0, 0, 0, 0, 0, -4, + -4, 0, 0, 0, 0, 0, 142, 143, 144, 0, + 0, 0, 0, 145, 146, 147, 0, 0, 0, 0, + 0, 0, 0, 0, -4, -4, 0, 0, 0, 148, + 149, 0, 0, 0, 150, -4, -4, -4, 0, 257, + 0, -4, -4, -4, 154, -4, -4, -4, -4, -4, + -4, -4, -4, -4, -4, -4, -4, 0, -4, -4, + -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, - 0, 0, 0, -4, -4, -4, -4, 0, 9, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, - 12, 13, 0, 0, 0, 14, 15, 16, 0, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 0, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 7, 8, 0, 57, 58, 59, 0, 0, 0, - 0, 0, 60, 0, 0, 0, 0, 61, 62, 63, - 64, 0, 0, 65, 0, 66, 0, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 0, 0, - 0, 78, 79, 80, 81, 0, 0, 0, 0, 612, - 20, 21, 613, 23, 24, 614, 26, 615, 28, 0, - 29, 0, 0, 0, 33, 34, 0, 36, 37, 38, - 0, 0, 0, 41, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 0, 0, 0, 0, 0, 0, 1356, - 0, 1357, 0, 0, 0, 0, 62, 63, 64, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 1454, 0, 1455, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 0, 0, 889, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 0, 0, 939, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, - 959, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 0, 0, 980, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 0, 0, 1075, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 0, 0, 1323, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 0, 0, 1342, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, - 1385, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 0, 0, 1386, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 0, 0, 1387, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 0, 0, 1388, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 0, 0, 1389, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, - 1423, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 0, 0, 1470, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 0, 0, 1476, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 0, 0, 1477, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 0, 0, 1498, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, - 1501, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 0, 0, 1504, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 0, 0, 1527, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 0, 0, 1530, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 0, 0, 1564, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, - 1566, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 0, 0, 1568, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 0, 0, 1581, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 0, 0, 1608, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 0, 681, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 0, 0, 0, 0, 0, 0, 1399, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 641, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 688, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 689, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 747, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 786, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 787, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 802, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 803, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 804, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 805, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 806, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 807, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 921, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 922, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 923, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 954, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 1034, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 1073, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 1074, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 1125, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 1283, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 1284, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 1291, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 1435, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 0, 0, 0, 1436, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 0, 0, 0, 1440, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, - 1520, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 0, 0, 0, 1523, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 0, - 0, 0, 1562, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 604, 380, 381, 382, 383, + -4, -4, -4, -4, -4, -4, -4, 0, 0, 0, + -4, -4, -4, 0, 0, 0, 0, 0, -4, 6, + 0, 0, 0, -4, -4, -4, -4, 7, 8, -4, + 0, -4, 0, -4, -4, -4, -4, -4, -4, -4, + -4, -4, -4, -4, 0, 0, 0, -4, -4, -4, + -4, 0, 9, 10, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 12, 13, 0, 0, 0, 14, + 15, 16, 0, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 0, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 0, 0, 0, 57, 58, + 59, 0, 0, 0, 0, 0, 60, 0, 0, 0, + 0, 61, 62, 63, 64, 0, 0, 65, 0, 66, + 0, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 0, 0, 0, 78, 79, 80, 81, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 0, 0, 892, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 0, 0, 0, 0, 394, 0, 0, 0, 752, 380, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 0, 0, 942, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 0, 0, 962, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 0, 0, + 983, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 0, 0, 1079, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 0, 0, 1328, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 0, 0, 1347, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 0, 0, 1390, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 0, 0, + 1391, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 0, 0, 1392, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 0, 0, 1393, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 0, 0, 1394, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 0, 0, 1428, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 0, 0, + 1475, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 0, 0, 1481, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 0, 0, 1482, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 0, 0, 1503, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 0, 0, 1506, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 0, 0, + 1509, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 0, 0, 1532, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 0, 0, 1535, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 0, 0, 1569, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 0, 0, 1571, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 0, 0, + 1573, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 0, 0, 1586, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 0, 0, 1613, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 0, 683, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 0, 0, 0, 0, 0, 0, + 1404, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 739, 0, 0, 0, 0, 690, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 643, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 690, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 691, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 749, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 788, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 789, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 804, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 805, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 806, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 807, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 808, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 809, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 924, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 925, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 926, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 957, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 1038, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 1077, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 1078, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 1129, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 1288, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 1289, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 1296, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 1440, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 0, 1441, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 1445, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 0, 0, 0, 1525, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 0, 0, 0, 1528, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, + 1567, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 606, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 0, 0, 754, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 764, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 762, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 0, 0, 765, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 767, 380, 381, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 0, 0, 767, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 769, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 0, 0, 0, 0, 395, 0, 0, 0, 771, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 0, 0, 0, 394, 0, 0, 0, - 769, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 771, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 0, 0, 0, 773, 380, 381, 382, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 773, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 0, + 395, 0, 0, 0, 775, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 777, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 775, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 0, - 0, 0, 777, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 779, 380, 381, 382, 383, + 393, 394, 0, 0, 0, 0, 395, 0, 0, 0, + 779, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 781, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 0, 0, 783, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 0, 0, 0, 0, 394, 0, 0, 0, 781, 380, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 785, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 783, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 0, 0, 785, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 789, 380, 381, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 0, 0, 787, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 791, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 0, 0, 0, 0, 395, 0, 0, 0, 793, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 0, 0, 0, 394, 0, 0, 0, - 791, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 793, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 0, 0, 0, 795, 380, 381, 382, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 795, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 0, + 395, 0, 0, 0, 797, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 799, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 797, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 0, - 0, 0, 799, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 801, 380, 381, 382, 383, + 393, 394, 0, 0, 0, 0, 395, 0, 0, 0, + 801, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 803, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 0, 0, 950, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 0, 0, 0, 0, 394, 0, 0, 0, 947, 380, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 951, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 948, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 0, 0, 952, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 953, 380, 381, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 0, 0, 955, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 956, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 0, 0, 0, 0, 395, 0, 0, 0, 960, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 0, 0, 0, 394, 0, 0, 0, - 957, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 0, 0, 981, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 0, 0, 0, 1029, 380, 381, 382, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 0, + 0, 984, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 0, + 395, 0, 0, 0, 1033, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 0, 0, 1141, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 0, 0, 1137, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 0, - 0, 0, 1139, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 0, 0, 1141, 380, 381, 382, 383, + 393, 394, 0, 0, 0, 0, 395, 0, 0, 0, + 1143, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 0, 0, 1145, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 0, 0, 1147, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 0, 0, 0, 0, 394, 0, 0, 0, 1143, 380, + 394, 0, 0, 0, 0, 395, 0, 0, 0, 1255, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 0, - 0, 1250, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 0, 0, 1275, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 0, 0, 1412, 380, 381, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 0, 0, 1280, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 0, 0, 1417, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 0, 0, 0, 0, 395, 0, 602, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 0, 0, 0, 0, 395, 0, 649, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 0, 0, 0, 0, 395, 0, 653, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 0, 0, 0, 394, 0, 600, 380, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 654, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 647, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 0, - 651, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 652, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 654, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 656, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 0, 657, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 660, 380, 381, 382, 383, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 656, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 658, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 0, + 395, 0, 659, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 662, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 663, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 739, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 0, 0, 0, 0, 395, 0, 745, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 0, 0, 0, 0, 394, 0, 661, 380, 381, 382, + 394, 0, 0, 0, 0, 395, 0, 746, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 737, 380, 381, + 393, 394, 0, 0, 0, 0, 395, 0, 747, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 0, 0, 0, 394, 0, 743, 380, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 753, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 744, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 0, - 745, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 751, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 764, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 766, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 0, 768, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 770, 380, 381, 382, 383, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 766, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 768, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 0, + 395, 0, 770, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 772, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 774, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 776, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 0, 0, 0, 0, 395, 0, 778, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 0, 0, 0, 0, 394, 0, 772, 380, 381, 382, + 394, 0, 0, 0, 0, 395, 0, 780, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 774, 380, 381, + 393, 394, 0, 0, 0, 0, 395, 0, 782, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 0, 0, 0, 394, 0, 776, 380, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 784, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 778, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 0, - 780, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 782, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 784, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 788, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 0, 790, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 792, 380, 381, 382, 383, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 786, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 790, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 0, + 395, 0, 792, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 794, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 796, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 798, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 0, 0, 0, 0, 395, 0, 800, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 0, 0, 0, 0, 394, 0, 794, 380, 381, 382, + 394, 0, 0, 0, 0, 395, 0, 802, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 796, 380, 381, + 393, 394, 0, 0, 0, 0, 395, 0, 881, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 0, 0, 0, 394, 0, 798, 380, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 886, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 800, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 0, - 878, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 883, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 888, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 891, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 0, 892, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 898, 380, 381, 382, 383, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 891, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 894, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 0, + 395, 0, 895, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 901, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 908, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 909, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 0, 0, 0, 0, 395, 0, 910, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 0, 0, 0, 0, 394, 0, 905, 380, 381, 382, + 394, 0, 0, 0, 0, 395, 0, 941, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 906, 380, 381, + 393, 394, 0, 0, 0, 0, 395, 0, 943, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 0, 0, 0, 394, 0, 907, 380, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 944, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 938, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 0, - 940, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 941, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 942, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 946, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394, 0, 1136, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 0, - 0, 0, 0, 394, 0, 1138, 380, 381, 382, 383, + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 945, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 949, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 0, + 395, 0, 1140, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 0, 0, 0, + 0, 395, 0, 1142, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 0, 0, + 0, 0, 395, 0, 1144, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 0, + 0, 0, 0, 395, 0, 1146, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 0, 0, 0, 0, 395, 0, 1155, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 0, 0, 0, 0, 394, 0, 1140, 380, 381, 382, + 394, 0, 0, 0, 0, 395, 0, 1329, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 0, 0, 0, 0, 394, 0, 1142, 380, 381, + 393, 394, 0, 0, 0, 0, 395, 0, 1346, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 0, 0, 0, 0, 394, 0, 1150, 380, + 392, 393, 394, 0, 0, 0, 0, 395, 0, 1365, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 0, 0, 0, 0, 394, 0, 1324, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 0, 0, 0, 0, 394, 0, - 1341, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 0, 0, 0, 0, 394, - 0, 1360, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 0, 0, 0, 0, - 394, 0, 1519, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 0, 0, 0, - 0, 394, 0, 1579, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 0, 0, - 0, 0, 394 + 391, 392, 393, 394, 0, 0, 0, 0, 395, 0, + 1524, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 0, 0, 0, 0, 395, + 0, 1584, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 0, 0, 0, 0, + 395 }; static const yytype_int16 yycheck[] = { - 3, 6, 3, 6, 933, 225, 937, 210, 455, 456, - 176, 4, 4, 1243, 348, 181, 6, 237, 4, 185, - 4, 4, 4, 357, 4, 6, 192, 6, 4, 4, - 4, 6, 5, 5, 5, 122, 6, 6, 171, 6, - 6, 6, 6, 6, 177, 7, 4, 4, 135, 136, - 0, 367, 4, 100, 370, 6, 4, 4, 6, 167, - 168, 172, 282, 174, 284, 6, 3, 4, 179, 177, - 167, 168, 9, 10, 11, 7, 1306, 14, 15, 16, + 3, 6, 348, 6, 210, 4, 7, 456, 457, 4, + 6, 1248, 358, 368, 225, 5, 371, 6, 940, 936, + 4, 100, 4, 4, 4, 4, 237, 4, 6, 3, + 5, 4, 66, 5, 68, 6, 6, 4, 6, 4, + 4, 122, 6, 6, 6, 6, 6, 6, 6, 4, + 160, 161, 160, 161, 135, 136, 167, 168, 44, 45, + 4, 47, 6, 160, 161, 170, 176, 172, 178, 0, + 178, 282, 7, 284, 1311, 170, 160, 161, 66, 176, + 7, 178, 177, 3, 4, 5, 170, 6, 7, 9, + 10, 11, 13, 177, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 60, 8, 170, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 160, 161, + 170, 51, 52, 53, 170, 112, 113, 114, 115, 160, + 161, 177, 160, 161, 6, 177, 1383, 131, 110, 110, + 8, 110, 110, 160, 161, 171, 177, 122, 123, 177, + 176, 164, 165, 6, 160, 161, 1403, 122, 123, 176, + 6, 170, 7, 174, 171, 164, 165, 172, 177, 174, + 177, 155, 4, 1100, 179, 6, 171, 177, 170, 157, + 6, 176, 170, 177, 157, 177, 177, 177, 177, 177, + 70, 178, 177, 170, 177, 177, 177, 177, 172, 6, + 7, 131, 147, 148, 149, 150, 172, 137, 138, 139, + 147, 148, 149, 150, 144, 145, 146, 213, 214, 172, + 160, 161, 167, 168, 7, 221, 447, 448, 60, 225, + 160, 161, 64, 160, 161, 165, 176, 602, 178, 66, + 170, 606, 172, 75, 174, 175, 467, 177, 170, 179, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 170, 160, 161, 170, 169, 167, + 168, 195, 196, 197, 177, 63, 291, 178, 66, 177, + 1527, 176, 371, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 170, 519, 160, + 161, 169, 147, 148, 149, 150, 171, 231, 232, 176, + 178, 176, 160, 161, 181, 176, 160, 161, 185, 243, + 244, 63, 167, 168, 66, 192, 68, 7, 176, 174, + 160, 161, 176, 170, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 176, 360, 361, 362, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 4, + 1607, 360, 361, 362, 147, 148, 149, 150, 170, 167, + 168, 167, 168, 176, 160, 161, 174, 170, 181, 160, + 161, 177, 185, 66, 167, 168, 3, 4, 5, 192, + 176, 171, 9, 10, 11, 176, 176, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 160, 161, 44, 45, 8, 47, 160, 161, 45, 46, - 47, 173, 60, 60, 176, 52, 53, 64, 178, 160, - 161, 7, 176, 60, 178, 13, 63, 7, 75, 66, - 170, 68, 112, 113, 114, 115, 177, 177, 160, 161, - 110, 63, 79, 66, 66, 131, 110, 110, 1378, 86, - 87, 88, 89, 90, 155, 177, 170, 94, 8, 110, - 97, 164, 165, 177, 122, 123, 173, 1096, 1398, 176, - 122, 123, 167, 168, 164, 165, 167, 168, 170, 172, - 6, 174, 177, 174, 6, 177, 179, 170, 157, 170, - 6, 177, 157, 177, 177, 177, 177, 172, 178, 365, - 137, 177, 368, 177, 177, 177, 177, 144, 145, 146, - 177, 177, 174, 170, 170, 147, 148, 149, 150, 160, - 161, 160, 161, 160, 161, 170, 446, 447, 165, 160, - 161, 63, 177, 170, 66, 167, 168, 176, 175, 178, - 177, 178, 174, 6, 7, 176, 466, 151, 152, 153, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 676, + 677, 678, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 160, 161, 171, 51, 52, 53, 6, 176, 4, + 5, 86, 87, 88, 89, 160, 161, 176, 66, 94, + 539, 63, 97, 256, 66, 258, 4, 5, 454, 455, + 173, 176, 66, 176, 170, 686, 462, 147, 148, 149, + 150, 177, 456, 457, 39, 40, 41, 42, 43, 44, + 1412, 170, 1414, 172, 1416, 177, 51, 167, 168, 160, + 161, 39, 40, 41, 42, 43, 44, 160, 161, 366, + 68, 170, 369, 51, 60, 176, 82, 63, 173, 63, + 66, 176, 66, 176, 68, 177, 92, 606, 160, 161, + 137, 138, 139, 63, 100, 101, 102, 144, 145, 146, + 106, 107, 108, 109, 176, 63, 1463, 167, 168, 1466, + 160, 161, 1469, 160, 161, 177, 4, 177, 165, 160, + 161, 82, 173, 170, 66, 176, 176, 172, 175, 174, + 177, 92, 5, 366, 179, 176, 369, 160, 161, 100, + 101, 102, 63, 138, 139, 106, 107, 108, 109, 160, + 161, 4, 66, 176, 1516, 160, 161, 162, 163, 164, + 138, 139, 607, 170, 169, 176, 39, 40, 41, 42, + 43, 44, 167, 168, 160, 161, 4, 410, 51, 174, + 160, 161, 170, 172, 170, 174, 483, 484, 485, 4, + 179, 177, 6, 1550, 60, 841, 176, 63, 6, 171, + 66, 6, 68, 646, 176, 648, 1568, 504, 1570, 172, + 1572, 1006, 731, 170, 1009, 1010, 1578, 178, 170, 648, + 172, 171, 174, 171, 171, 177, 176, 179, 176, 176, + 675, 676, 677, 678, 1591, 12, 13, 1594, 60, 173, + 1597, 63, 176, 1600, 66, 764, 68, 162, 163, 164, + 483, 484, 485, 1615, 169, 1617, 173, 1619, 170, 176, + 12, 13, 170, 689, 172, 138, 139, 170, 4, 172, + 696, 504, 170, 1630, 172, 1632, 702, 1634, 511, 170, + 170, 172, 172, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 170, 71, 172, 4, 179, 75, 76, + 170, 78, 79, 80, 176, 170, 178, 84, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 170, 71, + 172, 764, 170, 75, 76, 170, 78, 79, 80, 170, + 170, 172, 84, 170, 170, 764, 172, 1226, 1227, 7, + 117, 118, 119, 640, 170, 642, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 170, 170, 172, 172, 169, 117, 118, 119, 811, 170, + 170, 1017, 172, 170, 817, 818, 4, 6, 821, 822, + 823, 8, 811, 177, 177, 828, 683, 6, 817, 818, + 170, 170, 821, 822, 823, 170, 170, 172, 172, 828, + 170, 178, 172, 170, 177, 12, 13, 640, 170, 642, + 172, 6, 170, 170, 172, 172, 170, 650, 651, 170, + 170, 172, 865, 170, 170, 172, 178, 170, 170, 172, + 727, 170, 729, 172, 4, 170, 865, 734, 735, 736, + 737, 960, 170, 170, 172, 742, 176, 170, 178, 875, + 683, 177, 6, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 176, 71, 178, 177, 177, 75, 76, + 177, 78, 79, 80, 176, 170, 178, 84, 177, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 147, 148, 149, 150, 169, 6, 147, 148, 149, - 150, 213, 214, 170, 178, 160, 161, 167, 168, 221, - 177, 167, 168, 225, 600, 6, 291, 177, 604, 170, - 8, 176, 1522, 178, 4, 5, 160, 161, 518, 160, - 161, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 176, 482, 483, 484, 169, - 160, 161, 171, 370, 172, 160, 161, 176, 178, 39, - 40, 41, 42, 43, 44, 170, 176, 503, 195, 196, - 197, 51, 177, 172, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 170, 359, 360, 361, 349, - 350, 351, 352, 353, 354, 355, 356, 66, 171, 359, - 360, 361, 1602, 176, 231, 232, 160, 161, 172, 66, - 174, 68, 3, 4, 5, 179, 243, 244, 9, 10, - 11, 170, 176, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 674, 675, 676, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 170, 138, 139, - 51, 52, 53, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 4, 5, 160, - 161, 169, 7, 171, 455, 456, 170, 160, 161, 160, - 161, 7, 60, 5, 684, 63, 177, 173, 66, 176, - 176, 178, 638, 176, 640, 176, 1407, 170, 1409, 172, - 1411, 170, 39, 40, 41, 42, 43, 44, 160, 161, - 171, 538, 170, 4, 51, 176, 70, 39, 40, 41, - 42, 43, 44, 171, 176, 160, 161, 66, 176, 51, - 131, 453, 454, 6, 7, 681, 137, 138, 139, 461, - 170, 176, 172, 144, 145, 146, 160, 161, 171, 1458, - 160, 161, 1461, 176, 6, 1464, 160, 161, 177, 160, - 161, 170, 176, 172, 165, 174, 176, 66, 177, 170, - 179, 172, 176, 174, 175, 171, 177, 604, 179, 725, - 176, 727, 160, 161, 66, 171, 732, 733, 734, 735, - 176, 170, 170, 172, 740, 86, 87, 88, 89, 177, - 1511, 138, 139, 94, 173, 173, 97, 176, 176, 160, - 161, 68, 147, 148, 149, 150, 138, 139, 160, 161, - 605, 147, 148, 149, 150, 176, 170, 160, 161, 63, - 167, 168, 167, 168, 176, 63, 1545, 174, 66, 177, - 68, 167, 168, 176, 160, 161, 171, 177, 160, 161, - 66, 176, 1563, 63, 1565, 838, 1567, 160, 161, 63, - 176, 644, 1573, 646, 176, 171, 812, 176, 814, 178, - 176, 160, 161, 176, 66, 4, 646, 1586, 4, 63, - 1589, 4, 66, 1592, 68, 170, 1595, 176, 673, 674, - 675, 676, 170, 4, 172, 841, 842, 843, 844, 1610, - 170, 1612, 729, 1614, 170, 170, 1002, 172, 170, 1005, - 1006, 6, 6, 82, 6, 170, 1625, 172, 1627, 170, - 1629, 172, 170, 92, 172, 160, 161, 162, 163, 164, - 172, 100, 101, 102, 169, 762, 4, 106, 107, 108, - 109, 162, 163, 164, 890, 170, 179, 172, 169, 4, - 82, 12, 13, 60, 7, 170, 63, 172, 170, 66, - 92, 68, 170, 82, 172, 687, 6, 170, 100, 101, - 102, 170, 694, 92, 106, 107, 108, 109, 700, 762, - 170, 100, 101, 102, 170, 170, 172, 106, 107, 108, - 109, 170, 762, 172, 1221, 1222, 170, 170, 172, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 178, - 71, 170, 170, 172, 75, 76, 170, 78, 79, 80, - 170, 60, 172, 84, 63, 170, 809, 66, 170, 68, - 1013, 170, 815, 172, 4, 818, 819, 820, 176, 809, - 178, 81, 825, 177, 177, 815, 178, 6, 818, 819, - 820, 176, 170, 178, 172, 825, 117, 118, 119, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 6, 170, 82, 172, 169, 177, 862, - 170, 170, 172, 172, 170, 92, 172, 170, 170, 172, - 172, 170, 862, 100, 101, 102, 176, 4, 178, 106, - 107, 108, 109, 176, 176, 178, 178, 177, 148, 149, - 150, 151, 152, 176, 176, 178, 178, 178, 176, 176, - 178, 178, 176, 163, 178, 170, 66, 167, 68, 66, - 957, 68, 176, 82, 178, 175, 176, 177, 178, 170, - 180, 181, 182, 183, 170, 185, 186, 187, 177, 176, - 872, 178, 192, 176, 176, 178, 178, 1103, 176, 176, - 178, 178, 176, 82, 178, 170, 176, 207, 178, 170, - 176, 178, 178, 92, 170, 1402, 216, 217, 177, 1006, - 1163, 100, 101, 102, 176, 225, 178, 106, 107, 108, - 109, 176, 176, 178, 178, 176, 176, 178, 178, 921, - 922, 923, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 256, 257, 258, 176, - 169, 178, 4, 176, 6, 178, 170, 267, 268, 269, - 176, 271, 178, 172, 274, 275, 170, 6, 278, 154, + 164, 1010, 170, 170, 727, 169, 729, 172, 924, 925, + 926, 734, 735, 736, 737, 176, 176, 178, 178, 742, + 117, 118, 119, 176, 176, 178, 178, 814, 1407, 816, + 6, 176, 1168, 178, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 176, 176, + 178, 178, 169, 176, 171, 178, 177, 844, 845, 846, + 847, 66, 66, 68, 68, 177, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 1035, 176, 170, 178, 169, 176, 176, 178, 178, 178, - 176, 301, 178, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 1134, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 176, 358, 178, - 176, 169, 178, 177, 176, 365, 178, 176, 368, 178, - 176, 176, 178, 178, 176, 176, 178, 178, 378, 177, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 176, 176, 178, 178, 176, - 176, 178, 178, 176, 1147, 178, 176, 170, 178, 409, - 1155, 170, 176, 1095, 178, 415, 176, 1147, 178, 6, - 420, 170, 177, 177, 177, 425, 426, 1370, 428, 429, - 5, 172, 172, 433, 172, 1178, 1181, 172, 438, 439, - 440, 5, 5, 174, 6, 6, 125, 177, 1178, 6, - 6, 6, 177, 172, 6, 1361, 1416, 4, 458, 459, - 460, 461, 462, 463, 169, 174, 1253, 467, 468, 469, - 470, 471, 1217, 7, 172, 475, 177, 7, 478, 479, - 1221, 1222, 482, 483, 484, 1559, 178, 487, 488, 489, - 7, 491, 7, 1399, 170, 495, 170, 170, 170, 7, - 171, 6, 6, 503, 7, 1187, 7, 177, 6, 509, - 510, 176, 6, 188, 1420, 6, 181, 1262, 4, 4, - 185, 177, 177, 177, 177, 122, 177, 192, 528, 82, - 171, 206, 532, 6, 209, 6, 536, 176, 171, 92, - 171, 1223, 176, 1225, 176, 1227, 176, 100, 101, 102, - 176, 171, 1512, 106, 107, 108, 109, 176, 233, 1241, - 6, 4, 1244, 1245, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 173, 4, - 6, 125, 169, 6, 4, 6, 125, 125, 7, 7, - 7, 256, 7, 258, 7, 7, 7, 7, 177, 4, - 6, 174, 82, 6, 178, 173, 606, 1513, 178, 1515, - 7, 7, 92, 288, 289, 7, 174, 177, 6, 6, - 100, 101, 102, 298, 173, 178, 106, 107, 108, 109, - 171, 6, 6, 82, 7, 635, 172, 6, 638, 170, - 640, 641, 170, 92, 177, 6, 157, 179, 648, 649, - 7, 100, 101, 102, 7, 7, 7, 106, 107, 108, - 109, 1402, 662, 7, 68, 7, 7, 6, 668, 1575, - 7, 171, 171, 673, 674, 675, 676, 7, 171, 171, - 7, 681, 7, 6, 4, 4, 170, 177, 688, 689, - 6, 6, 4, 7, 694, 6, 82, 7, 178, 177, - 365, 7, 7, 368, 12, 13, 92, 707, 6, 6, - 710, 6, 66, 6, 100, 101, 102, 6, 4, 4, - 106, 107, 108, 109, 1406, 725, 1408, 727, 1410, 178, - 178, 6, 732, 733, 734, 735, 1418, 4, 6, 1421, - 740, 171, 176, 171, 409, 174, 7, 747, 170, 749, - 750, 6, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 171, 71, 82, 6, 174, 75, 76, 171, - 78, 79, 80, 75, 92, 6, 84, 177, 177, 1524, - 1525, 6, 100, 101, 102, 6, 786, 787, 106, 107, - 108, 109, 178, 177, 177, 177, 177, 6, 6, 5, - 4, 6, 802, 803, 804, 805, 806, 807, 7, 117, - 118, 119, 812, 7, 814, 7, 1559, 482, 483, 484, - 7, 7, 177, 823, 172, 6, 6, 827, 177, 6, - 6, 831, 177, 1515, 177, 1578, 171, 177, 503, 173, - 4, 841, 842, 843, 844, 510, 846, 6, 1578, 6, - 121, 6, 12, 13, 176, 6, 6, 4, 6, 82, - 178, 1606, 6, 6, 6, 6, 4, 6, 5, 92, - 178, 6, 6, 6, 1617, 6, 1619, 100, 101, 102, - 12, 13, 6, 106, 107, 108, 109, 1617, 125, 1619, - 890, 1636, 6, 177, 6, 6, 6, 1640, 6, 6, + 172, 178, 12, 13, 169, 176, 176, 178, 178, 177, + 176, 814, 178, 816, 176, 176, 178, 178, 6, 176, + 176, 178, 178, 176, 1039, 178, 893, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 844, 845, 846, 847, 169, 176, 172, 178, 1138, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 1640, 71, 176, 6, 6, 75, 76, 6, 78, 79, - 80, 6, 171, 6, 84, 6, 6, 602, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 7, 71, - 6, 174, 177, 75, 76, 6, 78, 79, 80, 5, - 177, 951, 84, 6, 954, 178, 6, 117, 118, 119, - 64, 6, 6, 6, 6, 965, 177, 6, 178, 7, - 6, 178, 6, 638, 177, 640, 177, 177, 123, 177, - 120, 178, 82, 648, 649, 117, 118, 119, 6, 6, - 6, 6, 92, 6, 669, 6, 6, 6, 177, 6, - 100, 101, 102, 82, 6, 680, 106, 107, 108, 109, - 6, 6, 177, 92, 1014, 177, 681, 178, 178, 6, - 82, 100, 101, 102, 1024, 1025, 6, 106, 107, 108, - 109, 177, 4, 4, 1034, 1035, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 178, 6, 178, 177, - 177, 177, 177, 6, 6, 6, 12, 13, 6, 6, - 725, 177, 727, 6, 177, 6, 6, 732, 733, 734, - 735, 177, 1072, 1073, 1074, 740, 177, 6, 178, 177, - 6, 756, 1082, 6, 1084, 6, 6, 6, 6, 6, - 6, 1040, 1481, 1032, 407, 1095, 3, 3, 1159, 178, - 432, -1, -1, 1103, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, -1, 71, -1, -1, -1, 75, - 76, -1, 78, 79, 80, 1125, 1126, 1127, 84, -1, - -1, -1, -1, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 812, -1, 814, - -1, 169, -1, -1, -1, -1, 1156, -1, -1, -1, - -1, 117, 118, 119, -1, -1, -1, -1, -1, 1169, - -1, -1, -1, -1, 1174, -1, 841, 842, 843, 844, - -1, 1181, -1, 12, 13, 1185, 1186, -1, -1, -1, - -1, -1, 1192, 1193, -1, -1, -1, 1197, -1, -1, - -1, 876, 877, -1, 879, 1205, 881, 882, -1, -1, - 885, 886, -1, -1, -1, 1215, -1, 1217, -1, -1, - -1, -1, 178, -1, -1, 890, -1, -1, -1, 1229, - -1, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 1241, 71, -1, -1, 1245, 75, 76, 1248, 78, - 79, 80, -1, -1, -1, 84, -1, -1, -1, -1, - -1, -1, 1262, 12, 13, -1, -1, -1, 151, 152, + 172, 71, 82, 172, 5, 75, 76, 5, 78, 79, + 80, 176, 92, 178, 84, 176, 176, 178, 178, 5, + 100, 101, 102, 176, 6, 178, 106, 107, 108, 109, + 893, 6, 125, 81, 176, 176, 178, 178, 4, 176, + 6, 178, 176, 1099, 178, 3, 4, 117, 118, 119, + 174, 9, 10, 11, 177, 6, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 176, 1152, + 178, 176, 176, 178, 178, 1160, 6, 45, 46, 47, + 176, 6, 178, 1152, 52, 53, 177, 6, 178, 1375, + 148, 149, 150, 151, 152, 176, 172, 178, 178, 1258, + 1183, 1186, 176, 4, 178, 163, 176, 169, 178, 167, + 176, 176, 178, 178, 1183, 174, 7, 175, 176, 177, + 178, 172, 180, 181, 182, 183, 1192, 185, 186, 187, + 1421, 176, 178, 178, 192, 177, 7, 1222, 1564, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 176, 207, + 178, 176, 169, 178, 176, 176, 178, 178, 216, 217, + 7, 176, 1228, 178, 1230, 7, 1232, 225, 170, 137, + 1107, 170, 1226, 1227, 7, 170, 144, 145, 146, 176, + 1246, 178, 1267, 1249, 1250, 176, 176, 178, 178, 176, + 170, 178, 160, 161, 176, 6, 178, 165, 256, 257, + 258, 171, 170, 177, 82, 7, 6, 175, 7, 267, + 268, 269, 6, 271, 92, 6, 274, 275, 6, 4, + 278, 4, 100, 101, 102, 177, 1517, 177, 106, 107, + 108, 109, 177, 177, 1107, 122, 177, 171, 6, 6, + 176, 176, 171, 301, 171, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 178, 359, 176, 176, 169, 171, 176, 176, 366, 176, + 6, 369, 4, 173, 4, 6, 4, 6, 125, 6, + 125, 379, 7, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 7, 7, + 7, 7, 7, 125, 7, 1411, 177, 1413, 4, 1415, + 7, 6, 410, 1407, 174, 178, 178, 1423, 416, 6, + 1426, 173, 7, 421, 7, 7, 174, 177, 426, 427, + 82, 429, 430, 1246, 6, 171, 434, 1250, 6, 6, + 92, 439, 440, 441, 173, 6, 172, 7, 100, 101, + 102, 6, 170, 170, 106, 107, 108, 109, 177, 6, + 157, 459, 460, 461, 462, 463, 464, 179, 7, 7, + 468, 469, 470, 471, 472, 7, 68, 7, 476, 7, + 7, 479, 480, 82, 7, 483, 484, 485, 6, 1366, + 488, 489, 490, 92, 492, 7, 171, 171, 496, 171, + 171, 100, 101, 102, 1529, 1530, 504, 106, 107, 108, + 109, 7, 510, 511, 1520, 7, 7, 6, 4, 4, + 177, 170, 6, 6, 177, 7, 178, 1404, 6, 66, + 7, 529, 82, 7, 7, 533, 6, 1350, 6, 537, + 6, 1564, 92, 6, 6, 4, 4, 4, 1425, 4, + 100, 101, 102, 1366, 178, 6, 106, 107, 108, 109, + 1583, 6, 173, 176, 174, 7, 6, 171, 6, 171, + 6, 171, 75, 171, 1583, 6, 170, 6, 6, 178, + 6, 6, 5, 174, 177, 4, 1611, 188, 177, 177, + 6, 1404, 7, 177, 7, 7, 177, 177, 7, 1622, + 7, 1624, 177, 177, 6, 206, 172, 6, 209, 6, + 608, 6, 1425, 1622, 177, 1624, 1641, 171, 177, 177, + 173, 6, 1645, 6, 4, 6, 121, 6, 178, 6, + 176, 6, 233, 4, 6, 5, 1645, 6, 82, 637, + 6, 1518, 640, 1520, 642, 643, 6, 6, 92, 82, + 4, 6, 650, 651, 6, 6, 100, 101, 102, 92, + 6, 6, 106, 107, 108, 109, 664, 100, 101, 102, + 177, 6, 670, 106, 107, 108, 109, 675, 676, 677, + 678, 6, 125, 6, 6, 683, 6, 288, 289, 6, + 6, 6, 690, 691, 6, 176, 6, 298, 696, 6, + 171, 6, 6, 1580, 6, 1518, 7, 1520, 6, 174, + 177, 709, 6, 5, 712, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 727, + 64, 729, 6, 169, 178, 6, 734, 735, 736, 737, + 6, 6, 6, 177, 742, 178, 6, 177, 1561, 6, + 177, 749, 7, 751, 752, 6, 178, 178, 120, 177, + 177, 6, 123, 177, 6, 6, 6, 1580, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, -1, 1283, 1284, -1, 169, -1, 117, 118, - 119, 1291, 967, 968, 969, 178, -1, -1, -1, -1, - -1, -1, 977, -1, -1, -1, -1, -1, -1, -1, - 6, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, -1, 71, -1, -1, 1325, 75, 76, -1, 78, - 79, 80, -1, -1, -1, 84, -1, -1, -1, -1, - -1, -1, -1, 1343, -1, 1345, -1, -1, -1, 178, - -1, 1026, -1, -1, -1, -1, 1356, -1, 1358, -1, - -1, 1361, -1, -1, -1, -1, 1041, -1, 117, 118, - 119, -1, 1047, -1, 1374, -1, -1, -1, 1053, 1379, - 1055, 1056, -1, -1, -1, 1060, -1, -1, -1, -1, - 1065, 1066, 1067, -1, 6, -1, -1, -1, -1, 1399, - -1, -1, -1, -1, -1, -1, 1406, 1082, 1408, -1, - 1410, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1420, -1, 1097, -1, 1424, -1, 1101, -1, -1, 178, - -1, -1, -1, -1, -1, 1435, 1436, -1, 1103, -1, - 1440, -1, -1, -1, 6, -1, -1, -1, -1, -1, - 1450, -1, -1, -1, 1454, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 8, - -1, -1, -1, 169, -1, -1, -1, 1152, -1, 1154, - -1, 1481, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1492, -1, -1, -1, -1, -1, -1, 1499, - -1, -1, 1502, -1, -1, 1505, -1, -1, -1, 1509, - -1, -1, -1, 1513, -1, 1515, -1, -1, -1, -1, - 1520, -1, -1, 1523, -1, 1525, -1, -1, -1, -1, - -1, -1, -1, 1208, 1209, 1210, 1211, -1, -1, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, -1, -1, -1, 1556, 169, -1, -1, - -1, -1, 1562, -1, -1, -1, -1, -1, 1243, -1, - -1, -1, -1, -1, -1, 1575, 1241, -1, -1, -1, - 1245, 1256, -1, -1, -1, -1, -1, -1, 1263, 151, + 163, 164, 178, 6, 6, 6, 169, 6, 177, 6, + 788, 789, 6, 6, 6, 82, 178, 6, 82, 177, + 6, 177, 4, 177, 4, 92, 804, 805, 806, 807, + 808, 809, 6, 100, 101, 102, 814, 6, 816, 106, + 107, 108, 109, 6, 6, 6, 6, 6, 826, 6, + 6, 178, 830, 6, 177, 177, 834, 177, 6, 6, + 177, 6, 6, 6, 6, 6, 844, 845, 846, 847, + 177, 849, 6, 177, 3, 4, 177, 1036, 177, 177, + 9, 10, 11, 6, 6, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 6, 6, + 6, 178, 6, 6, 6, 893, 45, 46, 47, 6, + 6, 6, 1486, 52, 53, 1044, 408, 3, 82, 3, + -1, 60, 433, -1, 63, 1164, -1, 66, 92, 68, + -1, -1, -1, -1, -1, -1, 100, 101, 102, -1, + 79, -1, 106, 107, 108, 109, -1, 86, 87, 88, + 89, 90, 82, -1, -1, 94, -1, -1, 97, -1, + -1, -1, 92, -1, -1, -1, 954, -1, -1, 957, + 100, 101, 102, -1, -1, 6, 106, 107, 108, 109, + 968, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, -1, -1, -1, 137, 169, + 6, -1, -1, -1, -1, 144, 145, 146, -1, 12, + 13, -1, -1, 604, 178, -1, -1, -1, -1, -1, + -1, 160, 161, -1, -1, -1, 165, -1, -1, -1, + 1018, 170, -1, -1, -1, -1, 175, -1, 177, 178, + 1028, 1029, -1, -1, -1, -1, -1, -1, 178, -1, + 1038, 1039, -1, -1, -1, -1, -1, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, -1, 71, -1, + -1, -1, 75, 76, -1, 78, 79, 80, -1, -1, + 671, 84, -1, 82, -1, -1, -1, -1, 1076, 1077, + 1078, 682, -1, 92, -1, -1, -1, -1, 1086, -1, + 1088, 100, 101, 102, -1, -1, -1, 106, 107, 108, + 109, 1099, -1, -1, 117, 118, 119, -1, -1, 1107, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, + -1, 1129, 1130, 1131, -1, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, + -1, -1, -1, 169, -1, -1, -1, 758, -1, -1, + -1, -1, -1, 1161, -1, 178, -1, -1, -1, 178, + -1, -1, -1, -1, -1, -1, 1174, -1, -1, -1, + -1, 1179, -1, -1, -1, -1, -1, -1, 1186, -1, + 12, 13, 1190, 1191, -1, -1, -1, -1, -1, 1197, + 1198, -1, -1, -1, 1202, -1, -1, 82, -1, -1, + -1, -1, 1210, -1, -1, -1, -1, 92, -1, -1, + -1, -1, 1220, -1, 1222, 100, 101, 102, -1, -1, + -1, 106, 107, 108, 109, -1, 1234, -1, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 1246, 71, + -1, -1, 1250, 75, 76, 1253, 78, 79, 80, -1, + -1, -1, 84, -1, -1, -1, -1, 12, 13, 1267, + -1, -1, -1, -1, -1, -1, -1, -1, 879, 880, + -1, 882, -1, 884, 885, -1, -1, 888, 889, -1, + 1288, 1289, -1, -1, -1, 117, 118, 119, 1296, -1, + -1, -1, -1, 178, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, 71, 7, 8, -1, + 75, 76, 1330, 78, 79, 80, -1, -1, -1, 84, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1348, -1, 1350, -1, -1, -1, 178, -1, -1, -1, + -1, -1, -1, 1361, -1, 1363, -1, -1, 1366, 970, + 971, 972, 117, 118, 119, -1, -1, -1, -1, 980, + -1, 1379, -1, -1, -1, -1, 1384, -1, 6, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, -1, 1604, -1, -1, 169, -1, -1, - 1285, -1, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 3, 4, -1, -1, - 169, 1306, 9, 10, 11, -1, -1, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - -1, -1, -1, -1, -1, 1340, -1, -1, 45, 46, - 47, -1, -1, -1, 82, 52, 53, -1, -1, -1, - 1345, -1, -1, 60, 92, -1, 63, -1, -1, 66, - -1, 68, 100, 101, 102, -1, 1361, -1, 106, 107, - 108, 109, 79, 1378, -1, -1, -1, -1, -1, 86, - 87, 88, 89, 90, -1, -1, -1, 94, -1, -1, - 97, -1, -1, 1398, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1399, -1, -1, -1, -1, -1, - 1415, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 1420, -1, -1, -1, 169, - 137, 171, -1, -1, -1, -1, 176, 144, 145, 146, - 178, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 160, 161, -1, -1, 169, 165, -1, - -1, 1466, -1, 170, -1, -1, -1, -1, 175, -1, - -1, 178, -1, -1, -1, -1, -1, -1, -1, -1, - 3, 4, -1, -1, -1, -1, 9, 10, 11, -1, - -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, -1, -1, -1, -1, 1522, 1513, 1524, - 1515, -1, 45, 46, 47, -1, 3, 4, 5, 52, - 53, -1, 9, 10, 11, -1, -1, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - -1, 1556, 39, 40, 41, 42, 43, 44, 45, 46, - 47, -1, -1, -1, 51, 52, 53, -1, -1, -1, - 1575, -1, -1, 60, -1, -1, 63, -1, -1, 66, - -1, 68, -1, -1, -1, -1, -1, 1602, -1, -1, - -1, -1, 79, -1, -1, -1, -1, -1, -1, 86, - 87, 88, 89, 90, 137, -1, -1, 94, -1, -1, - 97, 144, 145, 146, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 160, 161, -1, - -1, -1, 165, -1, -1, -1, -1, 170, -1, -1, - 173, -1, 175, -1, 177, -1, -1, -1, -1, -1, - 137, 138, 139, -1, -1, -1, -1, 144, 145, 146, + 162, 163, 164, -1, -1, -1, 1404, 169, -1, -1, + -1, -1, -1, 1411, 176, 1413, 178, 1415, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1425, -1, 1030, + -1, 1429, -1, 178, -1, -1, -1, -1, -1, -1, + -1, -1, 1440, 1441, 1045, -1, -1, 1445, -1, -1, + 1051, -1, -1, -1, -1, -1, 1057, 1455, 1059, 1060, + -1, 1459, -1, 1064, -1, -1, -1, -1, 1069, 1070, + 1071, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 1086, -1, 6, 1486, 169, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1497, + 1101, -1, -1, -1, 1105, -1, 1504, -1, -1, 1507, + -1, -1, 1510, -1, -1, -1, 1514, -1, -1, -1, + 1518, -1, 1520, 6, 12, 13, -1, 1525, -1, -1, + 1528, -1, 1530, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 7, -1, -1, + -1, 169, -1, -1, -1, -1, 1157, -1, 1159, -1, + -1, -1, -1, 1561, -1, -1, -1, -1, -1, 1567, + -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 1580, 71, -1, -1, -1, 75, 76, -1, + 78, 79, 80, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 160, 161, -1, -1, -1, 165, -1, - -1, -1, -1, 170, -1, 3, 4, 5, 175, -1, - 177, 9, 10, 11, -1, -1, 14, 15, 16, 17, + -1, 1609, 1213, 1214, 1215, 1216, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, + 118, 119, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, -1, 1248, -1, -1, + 169, -1, -1, -1, -1, -1, -1, -1, 6, -1, + 1261, -1, -1, -1, -1, -1, -1, 1268, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 8, -1, -1, -1, 169, -1, -1, 1290, + 178, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 3, 4, -1, -1, 169, + 1311, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, -1, - -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, - -1, -1, -1, -1, 52, 53, -1, -1, -1, 12, - 13, -1, 60, -1, -1, 63, -1, -1, 66, -1, + -1, -1, -1, -1, 1345, -1, -1, 45, 46, 47, + -1, -1, -1, -1, 52, 53, -1, -1, -1, -1, + -1, -1, 60, -1, -1, 63, -1, -1, 66, -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 79, -1, -1, -1, -1, -1, -1, 86, 87, + -1, 79, 1383, -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, -1, -1, -1, 94, -1, -1, 97, - -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, -1, 71, -1, - -1, -1, 75, 76, -1, 78, 79, 80, -1, -1, - -1, 84, -1, -1, -1, -1, -1, -1, -1, 137, - -1, -1, -1, -1, -1, -1, 144, 145, 146, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 160, 161, 117, 118, 119, 165, -1, -1, - -1, -1, 170, -1, 3, 4, 5, 175, -1, 177, - 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, -1, -1, - -1, -1, -1, -1, -1, -1, 45, 46, 47, -1, - -1, -1, -1, 52, 53, 178, -1, -1, 12, 13, - -1, 60, -1, -1, 63, -1, -1, 66, -1, 68, + -1, -1, 1403, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, -1, -1, 1420, + -1, 169, -1, -1, -1, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 137, + -1, -1, -1, 169, -1, -1, 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 79, -1, -1, -1, -1, -1, -1, 86, 87, 88, - 89, 90, -1, -1, -1, 94, -1, -1, 97, -1, - -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, -1, 71, -1, -1, - -1, 75, 76, -1, 78, 79, 80, -1, -1, -1, - 84, -1, -1, -1, -1, -1, -1, -1, 137, -1, - -1, -1, -1, -1, -1, 144, 145, 146, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 160, 161, 117, 118, 119, 165, -1, -1, -1, - -1, 170, -1, 3, 4, -1, 175, -1, 177, 9, - 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, -1, -1, -1, - -1, -1, -1, -1, -1, 45, 46, 47, -1, -1, - -1, -1, 52, 53, 178, -1, -1, 12, 13, -1, - 60, -1, -1, 63, -1, -1, 66, -1, 68, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, - -1, -1, -1, -1, -1, -1, 86, 87, 88, 89, - 90, -1, -1, -1, 94, -1, -1, 97, -1, -1, - -1, -1, -1, -1, -1, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, -1, 71, -1, -1, -1, - 75, 76, 6, 78, 79, 80, -1, -1, -1, 84, - -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, - -1, 6, -1, -1, 144, 145, 146, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 160, 161, 117, 118, 119, 165, -1, -1, -1, -1, - 170, -1, 3, 4, -1, 175, -1, 177, 9, 10, - 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, -1, -1, -1, -1, - -1, -1, -1, -1, 45, 46, 47, -1, -1, -1, - -1, 52, 53, 178, -1, -1, -1, -1, -1, 60, - -1, -1, 63, -1, -1, 66, -1, 68, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, - -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, - -1, -1, -1, 94, -1, -1, 97, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, -1, -1, -1, -1, 169, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 6, -1, -1, -1, 169, -1, 137, -1, -1, -1, - -1, -1, -1, 144, 145, 146, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, - 161, -1, -1, -1, 165, -1, -1, -1, -1, 170, - -1, 3, 4, -1, 175, -1, 177, 9, 10, 11, + -1, -1, 160, 161, -1, -1, -1, 165, -1, -1, + 1471, -1, 170, -1, -1, -1, -1, 175, -1, -1, + 178, 3, 4, 5, -1, -1, -1, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, -1, -1, -1, -1, -1, - -1, -1, -1, 45, 46, 47, -1, -1, -1, -1, - 52, 53, -1, -1, -1, -1, -1, -1, 60, -1, + 32, 33, 34, 35, 36, -1, -1, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 1527, -1, 1529, 51, + 52, 53, -1, -1, -1, 12, 13, -1, 60, -1, -1, 63, -1, -1, 66, -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, -1, -1, -1, 94, -1, -1, 97, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, - 6, -1, -1, 169, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 137, -1, -1, -1, 6, + -1, -1, -1, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, -1, 71, -1, -1, -1, 75, 76, + -1, 78, 79, 80, -1, -1, 1607, 84, -1, -1, + -1, -1, -1, -1, -1, 137, 138, 139, -1, -1, -1, -1, 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, 161, - -1, -1, -1, 165, -1, -1, -1, -1, 170, -1, - 3, 4, -1, 175, -1, 177, 9, 10, 11, -1, + 117, 118, 119, 165, -1, -1, -1, -1, 170, -1, + 3, 4, 5, 175, -1, 177, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, -1, -1, -1, -1, 52, - 53, -1, -1, -1, -1, -1, -1, 60, -1, -1, + 53, 178, -1, -1, 12, 13, -1, 60, -1, -1, 63, -1, -1, 66, -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, -1, -1, - -1, 94, -1, -1, 97, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, - -1, -1, -1, 169, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 6, -1, - -1, -1, 169, -1, 137, -1, -1, -1, -1, -1, + -1, 94, -1, -1, 97, -1, -1, -1, -1, -1, + -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, -1, 71, -1, -1, -1, 75, 76, 6, + 78, 79, 80, -1, -1, -1, 84, -1, -1, -1, + -1, -1, -1, -1, 137, -1, -1, -1, 6, -1, -1, 144, 145, 146, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 160, 161, -1, - -1, -1, 165, -1, -1, -1, -1, 170, -1, 3, - 4, -1, 175, -1, 177, 9, 10, 11, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 160, 161, 117, + 118, 119, 165, -1, -1, -1, -1, 170, -1, 3, + 4, 5, 175, -1, 177, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, -1, -1, -1, -1, 52, 53, - -1, -1, -1, -1, -1, -1, 60, -1, -1, 63, + 178, -1, -1, -1, -1, -1, 60, -1, -1, 63, -1, -1, 66, -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, -1, -1, -1, - 94, -1, -1, 97, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, -1, -1, 6, - -1, 169, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 137, -1, -1, -1, -1, 6, -1, + 94, -1, -1, 97, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, + -1, -1, 169, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 6, -1, -1, + -1, 169, -1, 137, -1, -1, -1, -1, -1, -1, 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, 161, -1, -1, -1, 165, -1, -1, -1, -1, 170, -1, 3, 4, - 5, 175, -1, 177, 9, 10, 11, -1, -1, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, -1, -1, -1, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 3, 4, 5, 51, 52, 53, 9, - 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, -1, -1, -1, 39, - 40, 41, 42, 43, 44, 45, 46, 47, -1, -1, - -1, 51, 52, 53, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, - -1, -1, 169, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, - -1, 169, 137, 138, 139, -1, -1, -1, -1, 144, - 145, 146, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 160, 161, -1, -1, -1, - 165, -1, -1, -1, -1, 170, -1, -1, -1, -1, - 175, -1, 177, -1, -1, -1, -1, 137, 138, 139, - -1, -1, -1, -1, 144, 145, 146, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 160, 161, -1, -1, -1, 165, -1, -1, -1, -1, - 170, -1, 3, 4, 5, 175, -1, 177, 9, 10, - 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, -1, -1, -1, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 3, 4, -1, - 51, 52, 53, 9, 10, 11, -1, -1, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, - 46, 47, -1, -1, -1, -1, 52, 53, 3, 4, - -1, -1, -1, -1, 9, 10, 11, -1, -1, 14, + -1, 175, -1, 177, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, -1, -1, -1, -1, -1, 137, 138, 139, -1, - 45, 46, 47, 144, 145, 146, -1, 52, 53, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, - 161, -1, -1, -1, 165, -1, -1, -1, -1, 170, - -1, -1, -1, -1, 175, -1, 177, -1, -1, -1, - -1, 137, -1, -1, -1, -1, -1, -1, 144, 145, - 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 160, 161, -1, -1, -1, 165, - -1, -1, -1, -1, 170, -1, -1, 173, -1, 175, - -1, 177, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 137, -1, -1, -1, -1, -1, -1, 144, + 35, 36, -1, -1, -1, -1, -1, -1, -1, -1, + 45, 46, 47, -1, -1, -1, -1, 52, 53, -1, + -1, -1, -1, -1, -1, 60, -1, -1, 63, -1, + -1, 66, -1, 68, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, + -1, 86, 87, 88, 89, 90, -1, -1, -1, 94, + -1, -1, 97, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, -1, -1, -1, 8, + 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 137, -1, -1, -1, -1, -1, 8, 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, 161, -1, -1, -1, 165, -1, -1, -1, -1, 170, -1, 3, 4, -1, 175, -1, 177, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, - 46, 47, 3, 4, -1, -1, 52, 53, 9, 10, - 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, -1, -1, -1, -1, - -1, -1, -1, -1, 45, 46, 47, -1, -1, -1, - -1, 52, 53, -1, -1, -1, -1, -1, -1, 60, - -1, -1, 63, -1, -1, 66, -1, 68, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, - -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, - -1, 137, -1, 94, -1, -1, 97, -1, 144, 145, - 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 160, 161, 6, -1, -1, 165, - -1, -1, -1, -1, 170, -1, -1, -1, -1, 175, - -1, 177, -1, -1, -1, -1, 137, -1, -1, -1, - 7, 8, -1, 144, 145, 146, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, - 161, -1, -1, -1, 165, 3, 4, 5, -1, 170, - -1, 9, 10, 11, 175, -1, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, - -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 3, 4, -1, 51, 52, 53, 9, 10, 11, -1, - -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 7, -1, -1, -1, -1, -1, -1, - -1, -1, 45, 46, 47, -1, -1, -1, -1, 52, - 53, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 36, -1, -1, -1, -1, -1, -1, -1, -1, 45, + 46, 47, -1, -1, -1, -1, 52, 53, -1, -1, + -1, -1, -1, -1, 60, -1, -1, 63, -1, -1, + 66, -1, 68, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, + 86, 87, 88, 89, 90, -1, -1, -1, 94, -1, + -1, 97, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, + 169, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 8, -1, -1, -1, 169, - -1, -1, -1, -1, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 8, 137, - 138, 139, 169, -1, -1, -1, 144, 145, 146, -1, - -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, - -1, -1, 160, 161, -1, -1, -1, 165, -1, -1, - -1, -1, 170, -1, -1, -1, 8, 175, -1, -1, - -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, - -1, 144, 145, 146, -1, 8, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 160, 161, -1, - -1, -1, 165, -1, -1, -1, -1, 170, -1, -1, - -1, -1, 175, -1, -1, -1, -1, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, -1, -1, -1, -1, 169, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 151, 152, + -1, 137, -1, -1, -1, -1, -1, -1, 144, 145, + 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 160, 161, -1, -1, -1, 165, + -1, -1, -1, -1, 170, -1, 3, 4, -1, 175, + -1, 177, 9, 10, 11, -1, -1, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, + 47, -1, -1, -1, -1, 52, 53, -1, -1, -1, + -1, -1, -1, 60, -1, -1, 63, -1, -1, 66, + -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 79, -1, -1, -1, -1, -1, -1, 86, + 87, 88, 89, 90, -1, -1, -1, 94, -1, -1, + 97, -1, -1, -1, -1, -1, -1, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, -1, -1, -1, -1, 169, -1, -1, -1, - -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, + 163, 164, -1, -1, -1, -1, 169, 8, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 137, -1, -1, -1, -1, -1, 8, 144, 145, 146, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 160, 161, -1, -1, -1, 165, -1, + -1, -1, -1, 170, -1, 3, 4, -1, 175, -1, + 177, 9, 10, 11, -1, -1, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, -1, + -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, + -1, -1, -1, -1, 52, 53, -1, -1, -1, -1, + -1, -1, 60, -1, -1, 63, -1, -1, 66, -1, + 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 79, -1, -1, -1, -1, -1, -1, 86, 87, + 88, 89, 90, -1, -1, -1, 94, -1, -1, 97, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, -1, -1, -1, -1, 169, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, -1, 0, 1, -1, 169, 4, -1, -1, - -1, -1, -1, -1, -1, 12, 13, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, -1, -1, -1, -1, 169, -1, -1, -1, -1, - 37, 38, 176, -1, 178, -1, -1, -1, -1, -1, - -1, 48, 49, 50, -1, -1, -1, 54, 55, 56, - -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, -1, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, -1, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, -1, -1, -1, 103, 104, 105, -1, - -1, -1, -1, -1, 111, 4, -1, -1, -1, 116, - 117, 118, 119, 12, 13, 122, -1, 124, -1, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - -1, -1, -1, 140, 141, 142, 143, -1, 37, 38, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, - 49, 50, -1, -1, -1, 54, 55, 56, -1, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, -1, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, -1, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 12, 13, -1, 103, 104, 105, -1, -1, -1, - -1, -1, 111, -1, -1, -1, -1, 116, 117, 118, - 119, -1, -1, 122, -1, 124, -1, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, - -1, 140, 141, 142, 143, -1, -1, -1, -1, 60, + 162, 163, 164, -1, -1, -1, -1, 169, -1, 137, + -1, -1, -1, -1, -1, -1, 144, 145, 146, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 160, 161, -1, -1, -1, 165, -1, -1, + -1, -1, 170, -1, 3, 4, -1, 175, -1, 177, + 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, -1, -1, + -1, -1, -1, -1, -1, -1, 45, 46, 47, -1, + -1, 12, 13, 52, 53, 82, -1, -1, -1, -1, + -1, 60, -1, -1, 63, -1, -1, 66, -1, 68, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 79, -1, -1, -1, -1, -1, -1, 86, 87, 88, + 89, 90, -1, -1, -1, 94, -1, -1, 97, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, -1, -1, -1, 75, 76, -1, 78, 79, 80, -1, -1, -1, 84, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 137, -1, + -1, -1, 169, -1, -1, 144, 145, 146, -1, -1, + -1, -1, -1, -1, -1, -1, 117, 118, 119, -1, + -1, 160, 161, -1, -1, -1, 165, -1, -1, -1, + -1, 170, -1, 3, 4, 5, 175, -1, 177, 9, + 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, -1, -1, -1, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 3, 4, + 5, 51, 52, 53, 9, 10, 11, -1, -1, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, -1, -1, -1, 39, 40, 41, 42, 43, 44, + 45, 46, 47, -1, -1, -1, 51, 52, 53, 3, + 4, -1, -1, -1, -1, 9, 10, 11, -1, -1, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, -1, -1, -1, -1, -1, 137, 138, 139, + -1, 45, 46, 47, 144, 145, 146, -1, 52, 53, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 160, 161, -1, -1, -1, 165, -1, -1, -1, -1, + 170, -1, -1, -1, -1, 175, -1, 177, -1, -1, + -1, -1, 137, 138, 139, -1, -1, -1, -1, 144, + 145, 146, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 160, 161, -1, -1, -1, + 165, -1, -1, -1, -1, 170, -1, -1, -1, -1, + 175, -1, 177, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, + 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 160, 161, -1, -1, + -1, 165, -1, -1, -1, -1, 170, -1, -1, 173, + -1, 175, -1, 177, 3, 4, -1, -1, -1, -1, + 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 45, 46, 47, 3, + 4, -1, -1, 52, 53, 9, 10, 11, -1, -1, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 45, 46, 47, -1, -1, -1, -1, 52, 53, + 3, 4, -1, -1, -1, -1, 9, 10, 11, -1, + -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, -1, -1, -1, -1, -1, 137, -1, + -1, -1, 45, 46, 47, 144, 145, 146, -1, 52, + 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 160, 161, -1, -1, -1, 165, -1, -1, -1, + -1, 170, -1, -1, 173, -1, 175, -1, 177, -1, + -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, + 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 160, 161, -1, -1, + -1, 165, -1, -1, -1, -1, 170, -1, -1, -1, + -1, 175, -1, 177, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, + -1, 144, 145, 146, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 160, 161, -1, + -1, -1, 165, -1, -1, -1, -1, 170, -1, 3, + 4, -1, 175, -1, 177, 9, 10, 11, -1, -1, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, -1, -1, -1, -1, -1, -1, -1, + -1, 45, 46, 47, -1, -1, -1, -1, 52, 53, + -1, -1, -1, -1, -1, -1, 60, -1, -1, 63, + -1, -1, 66, -1, 68, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, + -1, -1, 86, 87, 88, 89, 90, -1, -1, -1, + 94, -1, -1, 97, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, -1, -1, -1, -1, -1, 176, - -1, 178, -1, -1, -1, -1, 117, 118, 119, 151, + -1, 178, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, + 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 160, 161, -1, -1, + -1, 165, 3, 4, 5, -1, 170, -1, 9, 10, + 11, 175, -1, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, -1, -1, -1, 39, 40, + 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, + 51, 52, 53, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, + -1, 169, -1, -1, -1, -1, -1, -1, 176, -1, + 178, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, + -1, -1, -1, -1, -1, -1, -1, -1, 178, -1, + -1, -1, -1, -1, -1, -1, -1, 0, 1, -1, + -1, 4, -1, -1, -1, -1, -1, -1, -1, 12, + 13, -1, -1, -1, -1, -1, 137, 138, 139, -1, + -1, -1, -1, 144, 145, 146, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, -1, -1, 160, + 161, -1, -1, -1, 165, 48, 49, 50, -1, 170, + -1, 54, 55, 56, 175, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, -1, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, -1, -1, -1, + 103, 104, 105, -1, -1, -1, -1, -1, 111, 4, + -1, -1, -1, 116, 117, 118, 119, 12, 13, 122, + -1, 124, -1, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, -1, -1, 140, 141, 142, + 143, -1, 37, 38, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, -1, -1, -1, 54, + 55, 56, -1, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, -1, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, -1, -1, -1, 103, 104, + 105, -1, -1, -1, -1, -1, 111, -1, -1, -1, + -1, 116, 117, 118, 119, -1, -1, 122, -1, 124, + -1, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, -1, -1, -1, 140, 141, 142, 143, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, -1, - -1, -1, -1, -1, 176, -1, 178, 151, 152, 153, + -1, -1, -1, -1, -1, -1, 178, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, -1, -1, -1, -1, -1, -1, -1, 178, 151, 152, 153, 154, 155, @@ -3263,12 +3269,17 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 178, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, -1, -1, -1, - -1, -1, -1, -1, 178, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, - -1, -1, -1, 169, -1, -1, -1, -1, -1, -1, - -1, 177, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, - 169, -1, -1, -1, -1, -1, -1, -1, 177, 151, + -1, -1, -1, 177, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, + -1, -1, 169, -1, -1, -1, -1, -1, -1, -1, + 177, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, + -1, 171, -1, -1, -1, -1, 176, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, -1, -1, -1, -1, 169, -1, -1, -1, -1, + -1, -1, 176, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, + -1, 169, -1, -1, -1, -1, -1, -1, 176, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, -1, -1, -1, -1, -1, 176, 151, 152, 153, 154, 155, @@ -3341,10 +3352,14 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 169, -1, -1, -1, -1, -1, -1, 176, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, - -1, -1, -1, -1, -1, -1, 176, 151, 152, 153, + -1, -1, -1, 173, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, + -1, -1, 169, -1, -1, -1, 173, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, -1, -1, -1, -1, 169, -1, -1, -1, -1, - -1, -1, 176, 151, 152, 153, 154, 155, 156, 157, + 164, -1, -1, -1, -1, 169, -1, -1, -1, 173, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, + -1, -1, 173, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, -1, -1, 173, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, @@ -3417,14 +3432,9 @@ static const yytype_int16 yycheck[] = 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, -1, -1, 173, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - -1, -1, -1, -1, 169, -1, -1, -1, 173, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, -1, -1, -1, -1, 169, -1, -1, - -1, 173, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, - 169, -1, -1, -1, 173, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, - -1, -1, -1, 169, -1, -1, -1, 173, 151, 152, + -1, -1, -1, -1, 169, -1, 171, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, -1, -1, -1, -1, 169, -1, 171, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, 171, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, @@ -3540,11 +3550,7 @@ static const yytype_int16 yycheck[] = 160, 161, 162, 163, 164, -1, -1, -1, -1, 169, -1, 171, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, -1, - 169, -1, 171, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, -1, -1, -1, - -1, 169, -1, 171, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, -1, -1, - -1, -1, 169 + 169 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -3586,136 +3592,137 @@ static const yytype_uint16 yystos[] = 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, 172, 170, - 172, 170, 170, 170, 170, 170, 170, 170, 7, 170, - 170, 170, 256, 256, 256, 177, 256, 173, 177, 256, - 4, 122, 123, 4, 4, 223, 224, 225, 177, 6, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 169, 177, 6, 203, 6, 256, - 4, 268, 269, 272, 268, 256, 206, 209, 256, 161, - 256, 263, 264, 256, 256, 170, 256, 264, 256, 256, - 170, 264, 256, 256, 261, 170, 177, 264, 170, 170, - 262, 262, 262, 170, 219, 220, 221, 222, 170, 170, - 170, 261, 256, 4, 261, 265, 177, 177, 258, 258, - 258, 256, 256, 160, 161, 177, 177, 258, 177, 177, - 177, 160, 161, 170, 225, 258, 177, 170, 177, 170, - 170, 170, 262, 262, 261, 170, 4, 6, 172, 172, - 225, 6, 177, 177, 177, 262, 262, 172, 172, 172, - 170, 172, 174, 172, 5, 177, 5, 5, 5, 60, - 63, 66, 68, 177, 256, 263, 256, 178, 264, 8, - 162, 6, 6, 256, 256, 256, 174, 256, 177, 125, - 256, 256, 256, 6, 6, 225, 6, 225, 172, 6, - 261, 261, 177, 269, 261, 6, 172, 256, 4, 256, + 172, 170, 172, 170, 170, 170, 170, 170, 170, 7, + 170, 170, 170, 256, 256, 256, 177, 256, 173, 177, + 256, 4, 122, 123, 4, 4, 223, 224, 225, 177, + 6, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 169, 177, 6, 203, 6, + 256, 4, 268, 269, 272, 268, 256, 206, 209, 256, + 161, 256, 263, 264, 256, 256, 170, 256, 264, 256, + 256, 170, 264, 256, 256, 261, 170, 177, 264, 170, + 170, 262, 262, 262, 170, 219, 220, 221, 222, 170, + 170, 170, 261, 256, 4, 261, 265, 177, 177, 258, + 258, 258, 256, 256, 160, 161, 177, 177, 258, 177, + 177, 177, 160, 161, 170, 225, 258, 177, 170, 177, + 170, 170, 170, 262, 262, 261, 170, 4, 6, 172, + 172, 225, 6, 177, 177, 177, 262, 262, 172, 172, + 172, 170, 172, 174, 172, 5, 177, 5, 5, 5, + 60, 63, 66, 68, 177, 256, 263, 256, 178, 264, + 8, 162, 6, 6, 256, 256, 256, 174, 256, 177, + 125, 256, 256, 256, 6, 6, 225, 6, 225, 172, + 6, 261, 261, 177, 269, 261, 6, 172, 256, 4, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 268, 270, 270, 268, 268, 268, 268, - 268, 268, 268, 268, 270, 256, 268, 268, 268, 264, - 171, 7, 202, 264, 173, 7, 202, 203, 174, 7, - 172, 178, 60, 63, 66, 68, 218, 256, 256, 256, + 256, 256, 256, 256, 268, 270, 270, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 270, 256, 268, 268, + 268, 264, 171, 7, 202, 264, 173, 7, 202, 203, + 174, 7, 172, 178, 60, 63, 66, 68, 218, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 187, 6, 172, 174, 171, 176, 171, - 176, 176, 173, 176, 205, 173, 205, 171, 162, 176, - 178, 171, 171, 256, 171, 178, 171, 171, 256, 178, - 171, 171, 7, 256, 256, 178, 256, 256, 7, 7, - 250, 250, 256, 170, 170, 170, 170, 256, 256, 256, - 7, 177, 171, 6, 177, 225, 225, 176, 176, 176, - 258, 258, 224, 224, 176, 256, 256, 256, 256, 236, - 176, 225, 256, 256, 256, 256, 256, 7, 251, 6, - 7, 256, 6, 256, 256, 178, 264, 264, 264, 6, - 6, 256, 256, 256, 171, 177, 173, 177, 256, 4, - 4, 256, 177, 177, 177, 177, 264, 171, 178, 256, - 177, 256, 263, 171, 171, 171, 122, 176, 225, 177, - 8, 171, 173, 178, 178, 171, 176, 178, 256, 6, - 6, 256, 173, 203, 171, 173, 171, 173, 171, 173, + 256, 256, 256, 256, 256, 187, 6, 172, 174, 171, + 176, 171, 176, 176, 173, 176, 205, 173, 205, 171, + 162, 176, 178, 171, 171, 256, 171, 178, 171, 171, + 256, 178, 171, 171, 7, 256, 256, 178, 256, 256, + 7, 7, 250, 250, 256, 170, 170, 170, 170, 256, + 256, 256, 7, 177, 171, 6, 177, 225, 225, 176, + 176, 176, 258, 258, 224, 224, 176, 256, 256, 256, + 256, 236, 176, 225, 256, 256, 256, 256, 256, 7, + 251, 6, 7, 256, 6, 256, 256, 178, 264, 264, + 264, 6, 6, 256, 256, 256, 171, 177, 173, 177, + 256, 4, 4, 256, 177, 177, 177, 177, 264, 171, + 178, 256, 177, 256, 263, 171, 171, 171, 122, 176, + 225, 177, 8, 171, 173, 178, 178, 171, 176, 178, + 256, 6, 6, 256, 173, 203, 171, 173, 171, 173, + 171, 173, 171, 173, 171, 173, 171, 173, 171, 173, + 171, 173, 171, 173, 171, 173, 171, 173, 176, 176, 171, 173, 171, 173, 171, 173, 171, 173, 171, 173, - 171, 173, 171, 173, 171, 173, 176, 176, 171, 173, + 171, 173, 171, 173, 176, 176, 176, 176, 176, 176, + 171, 176, 173, 171, 176, 173, 176, 176, 176, 171, + 171, 176, 176, 176, 171, 6, 176, 171, 176, 178, + 202, 261, 178, 174, 202, 203, 269, 256, 6, 4, + 4, 177, 266, 173, 177, 177, 177, 177, 178, 8, + 4, 112, 113, 114, 115, 178, 190, 194, 197, 199, + 200, 256, 4, 6, 157, 184, 264, 6, 264, 256, + 6, 4, 272, 6, 268, 7, 256, 263, 125, 7, + 7, 171, 7, 125, 7, 7, 171, 125, 7, 7, + 256, 171, 178, 177, 171, 171, 256, 261, 4, 249, + 6, 171, 215, 256, 269, 215, 215, 215, 171, 171, + 171, 261, 264, 174, 225, 178, 178, 258, 256, 256, + 178, 178, 256, 258, 176, 176, 176, 82, 92, 100, + 101, 102, 106, 107, 108, 109, 246, 247, 258, 178, + 233, 171, 178, 171, 171, 171, 256, 6, 256, 171, + 173, 173, 178, 178, 178, 173, 173, 176, 264, 264, + 173, 173, 178, 264, 264, 264, 264, 178, 8, 264, + 7, 7, 7, 174, 256, 178, 256, 256, 7, 174, + 177, 261, 6, 178, 173, 174, 203, 268, 256, 256, + 256, 256, 256, 256, 256, 256, 268, 264, 264, 268, + 268, 268, 268, 268, 256, 268, 171, 256, 6, 173, + 4, 122, 123, 256, 6, 6, 6, 7, 172, 265, + 267, 6, 264, 264, 264, 264, 256, 191, 170, 170, + 177, 201, 6, 173, 157, 268, 171, 171, 176, 7, + 258, 66, 68, 261, 261, 7, 261, 66, 68, 261, + 261, 7, 68, 261, 261, 6, 7, 7, 264, 7, + 7, 82, 248, 6, 7, 171, 171, 171, 171, 7, + 7, 7, 6, 178, 4, 178, 176, 176, 176, 178, + 178, 258, 258, 258, 4, 6, 177, 6, 170, 6, + 110, 6, 110, 6, 110, 6, 110, 178, 247, 176, + 246, 7, 6, 7, 7, 7, 6, 177, 6, 6, + 6, 66, 256, 6, 6, 256, 178, 178, 174, 178, + 178, 178, 178, 256, 178, 261, 261, 261, 4, 176, + 8, 8, 171, 4, 4, 261, 178, 6, 4, 6, 171, 173, 171, 173, 171, 173, 171, 173, 171, 173, - 171, 173, 176, 176, 176, 176, 176, 176, 171, 176, - 173, 171, 176, 173, 176, 176, 171, 171, 176, 176, - 176, 171, 6, 176, 171, 176, 178, 202, 261, 178, - 174, 202, 203, 269, 256, 6, 4, 4, 177, 266, - 173, 177, 177, 177, 177, 178, 8, 4, 112, 113, - 114, 115, 178, 190, 194, 197, 199, 200, 256, 4, - 6, 157, 184, 264, 6, 264, 256, 6, 4, 272, - 6, 268, 7, 256, 263, 125, 7, 7, 171, 7, - 125, 7, 7, 171, 125, 7, 7, 256, 171, 178, - 177, 171, 171, 256, 261, 4, 249, 6, 171, 215, - 256, 269, 215, 215, 215, 171, 171, 171, 261, 264, - 174, 225, 178, 178, 258, 256, 256, 178, 178, 256, - 258, 176, 176, 176, 82, 92, 100, 101, 102, 106, - 107, 108, 109, 246, 247, 258, 178, 233, 171, 178, - 171, 171, 171, 256, 6, 256, 171, 173, 173, 178, - 178, 178, 173, 173, 176, 264, 264, 173, 173, 178, - 264, 264, 264, 264, 178, 8, 264, 7, 7, 7, - 174, 256, 178, 256, 256, 7, 174, 177, 261, 6, - 178, 173, 174, 203, 268, 256, 256, 256, 256, 256, - 256, 256, 256, 268, 264, 264, 268, 268, 268, 268, - 256, 268, 171, 256, 6, 173, 4, 122, 123, 256, - 6, 6, 6, 7, 172, 265, 267, 6, 264, 264, - 264, 264, 256, 191, 170, 170, 177, 201, 6, 173, - 157, 268, 171, 171, 176, 7, 258, 66, 68, 261, - 261, 7, 261, 66, 68, 261, 261, 7, 68, 261, - 261, 6, 7, 7, 264, 7, 7, 82, 248, 6, - 7, 171, 171, 171, 171, 7, 7, 7, 6, 178, - 4, 178, 176, 176, 176, 178, 178, 258, 258, 258, - 4, 6, 177, 6, 170, 6, 110, 6, 110, 6, - 110, 6, 110, 178, 247, 176, 246, 7, 6, 7, - 7, 7, 6, 177, 6, 6, 6, 66, 256, 6, - 6, 256, 178, 178, 174, 178, 178, 178, 178, 256, - 178, 261, 261, 261, 4, 176, 8, 8, 171, 4, - 4, 261, 178, 6, 4, 6, 171, 173, 171, 173, - 171, 173, 171, 173, 171, 173, 171, 176, 171, 171, - 171, 171, 202, 6, 202, 7, 202, 203, 174, 7, - 6, 265, 256, 176, 178, 178, 178, 178, 178, 170, - 256, 256, 260, 261, 177, 174, 6, 6, 184, 6, - 256, 177, 256, 269, 6, 177, 177, 75, 217, 217, - 261, 6, 177, 177, 6, 6, 261, 177, 6, 6, - 5, 261, 178, 261, 261, 4, 6, 261, 7, 7, - 7, 7, 261, 261, 261, 7, 6, 7, 256, 256, - 256, 177, 177, 176, 178, 176, 178, 176, 178, 172, - 256, 261, 256, 6, 6, 6, 6, 256, 258, 178, - 5, 177, 261, 177, 177, 177, 261, 264, 177, 6, - 173, 171, 173, 4, 6, 6, 121, 256, 256, 256, - 6, 6, 7, 176, 6, 203, 268, 261, 261, 269, - 256, 6, 4, 266, 6, 173, 265, 6, 6, 6, - 6, 188, 256, 176, 176, 176, 178, 189, 256, 4, - 268, 176, 256, 269, 256, 256, 258, 6, 6, 6, - 256, 256, 6, 256, 5, 6, 177, 6, 125, 216, - 256, 6, 261, 261, 261, 261, 6, 4, 6, 6, - 256, 256, 269, 178, 171, 176, 178, 224, 224, 258, - 6, 237, 258, 6, 238, 258, 6, 239, 256, 178, - 176, 171, 178, 176, 6, 161, 258, 6, 260, 258, - 258, 6, 178, 256, 6, 261, 176, 178, 8, 178, - 171, 177, 256, 269, 261, 171, 6, 6, 6, 6, - 7, 6, 174, 171, 176, 256, 256, 261, 177, 176, - 178, 6, 256, 207, 208, 178, 178, 178, 178, 178, - 5, 260, 64, 6, 6, 6, 6, 6, 177, 177, - 6, 6, 177, 256, 178, 178, 176, 177, 176, 177, - 176, 177, 173, 6, 261, 7, 177, 256, 176, 178, - 176, 176, 6, 178, 120, 256, 256, 264, 6, 6, - 178, 265, 123, 192, 256, 176, 176, 260, 256, 6, - 176, 211, 213, 6, 6, 6, 6, 6, 6, 178, - 177, 260, 264, 224, 176, 178, 256, 258, 246, 256, - 258, 246, 256, 258, 246, 6, 176, 178, 261, 225, - 178, 258, 6, 264, 258, 256, 178, 178, 178, 6, - 6, 177, 256, 256, 178, 256, 176, 178, 212, 176, - 178, 214, 177, 256, 178, 178, 178, 256, 178, 176, - 178, 178, 176, 178, 178, 176, 178, 261, 6, 82, - 178, 234, 177, 176, 178, 176, 6, 6, 189, 171, - 176, 6, 177, 176, 4, 4, 256, 178, 6, 6, - 178, 6, 240, 256, 6, 6, 241, 256, 6, 6, - 242, 256, 6, 178, 256, 246, 225, 264, 6, 258, - 264, 178, 195, 256, 260, 256, 177, 261, 269, 177, - 256, 269, 176, 177, 178, 177, 178, 177, 178, 6, - 6, 178, 178, 235, 178, 176, 178, 6, 177, 171, - 178, 178, 210, 256, 270, 256, 246, 6, 243, 246, - 6, 244, 246, 6, 245, 246, 6, 264, 6, 193, - 268, 198, 177, 6, 176, 178, 7, 178, 178, 178, - 177, 178, 177, 178, 177, 178, 178, 176, 178, 177, - 260, 256, 269, 6, 6, 246, 6, 246, 6, 246, - 6, 268, 6, 196, 268, 178, 7, 178, 178, 178, - 176, 178, 6, 269, 6, 6, 6, 268, 6 + 171, 173, 176, 171, 171, 171, 171, 202, 6, 202, + 7, 202, 203, 174, 7, 6, 265, 256, 176, 178, + 178, 178, 178, 178, 170, 256, 256, 260, 261, 177, + 174, 6, 6, 184, 6, 256, 177, 256, 269, 6, + 177, 177, 75, 217, 217, 261, 6, 177, 177, 6, + 6, 261, 177, 6, 6, 5, 261, 178, 261, 261, + 4, 6, 261, 7, 7, 7, 7, 261, 261, 261, + 7, 6, 7, 256, 256, 256, 177, 177, 176, 178, + 176, 178, 176, 178, 172, 256, 261, 256, 6, 6, + 6, 6, 256, 258, 178, 5, 177, 261, 177, 177, + 177, 261, 264, 177, 6, 173, 171, 173, 4, 6, + 6, 121, 256, 256, 256, 6, 6, 7, 176, 6, + 203, 268, 261, 261, 269, 256, 6, 4, 266, 6, + 173, 265, 6, 6, 6, 6, 188, 256, 176, 176, + 176, 178, 189, 256, 4, 268, 176, 256, 269, 256, + 256, 258, 6, 6, 6, 256, 256, 6, 256, 5, + 6, 177, 6, 125, 216, 256, 6, 261, 261, 261, + 261, 6, 4, 6, 6, 256, 256, 269, 178, 171, + 176, 178, 224, 224, 258, 6, 237, 258, 6, 238, + 258, 6, 239, 256, 178, 176, 171, 178, 176, 6, + 161, 258, 6, 260, 258, 258, 6, 178, 256, 6, + 261, 176, 178, 8, 178, 171, 177, 256, 269, 261, + 171, 6, 6, 6, 6, 7, 6, 174, 171, 176, + 256, 256, 261, 177, 176, 178, 6, 256, 207, 208, + 178, 178, 178, 178, 178, 5, 260, 64, 6, 6, + 6, 6, 6, 177, 177, 6, 6, 177, 256, 178, + 178, 176, 177, 176, 177, 176, 177, 173, 6, 261, + 7, 177, 256, 176, 178, 176, 176, 6, 178, 120, + 256, 256, 264, 6, 6, 178, 265, 123, 192, 256, + 176, 176, 260, 256, 6, 176, 211, 213, 6, 6, + 6, 6, 6, 6, 178, 177, 260, 264, 224, 176, + 178, 256, 258, 246, 256, 258, 246, 256, 258, 246, + 6, 176, 178, 261, 225, 178, 258, 6, 264, 258, + 256, 178, 178, 178, 6, 6, 177, 256, 256, 178, + 256, 176, 178, 212, 176, 178, 214, 177, 256, 178, + 178, 178, 256, 178, 176, 178, 178, 176, 178, 178, + 176, 178, 261, 6, 82, 178, 234, 177, 176, 178, + 176, 6, 6, 189, 171, 176, 6, 177, 176, 4, + 4, 256, 178, 6, 6, 178, 6, 240, 256, 6, + 6, 241, 256, 6, 6, 242, 256, 6, 178, 256, + 246, 225, 264, 6, 258, 264, 178, 195, 256, 260, + 256, 177, 261, 269, 177, 256, 269, 176, 177, 178, + 177, 178, 177, 178, 6, 6, 178, 178, 235, 178, + 176, 178, 6, 177, 171, 178, 178, 210, 256, 270, + 256, 246, 6, 243, 246, 6, 244, 246, 6, 245, + 246, 6, 264, 6, 193, 268, 198, 177, 6, 176, + 178, 7, 178, 178, 178, 177, 178, 177, 178, 177, + 178, 178, 176, 178, 177, 260, 256, 269, 6, 6, + 246, 6, 246, 6, 246, 6, 268, 6, 196, 268, + 178, 7, 178, 178, 178, 176, 178, 6, 269, 6, + 6, 6, 268, 6 }; #define yyerrok (yyerrstatus = 0) @@ -5726,9 +5733,7 @@ yyreduce: { std::string key((yyvsp[(3) - (3)].c)); std::vector<double> val(1, 0.); - floatOptions.clear(); charOptions.clear(); if(!gmsh_yysymbols.count(key)){ - Msg::ExchangeOnelabParameter(key, val, floatOptions, charOptions); gmsh_yysymbols[key].value = val; } Free((yyvsp[(3) - (3)].c)); @@ -5736,13 +5741,11 @@ yyreduce: break; case 98: -#line 1217 "Gmsh.y" +#line 1215 "Gmsh.y" { std::string key((yyvsp[(3) - (5)].c)); std::vector<double> val(1, (yyvsp[(5) - (5)].d)); - floatOptions.clear(); charOptions.clear(); if(!gmsh_yysymbols.count(key)){ - Msg::ExchangeOnelabParameter(key, val, floatOptions, charOptions); gmsh_yysymbols[key].value = val; } Free((yyvsp[(3) - (5)].c)); @@ -5750,12 +5753,12 @@ yyreduce: break; case 99: -#line 1228 "Gmsh.y" +#line 1224 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 100: -#line 1230 "Gmsh.y" +#line 1226 "Gmsh.y" { std::string key((yyvsp[(3) - (9)].c)); std::vector<double> val(1, (yyvsp[(6) - (9)].d)); @@ -5768,12 +5771,10 @@ yyreduce: break; case 101: -#line 1240 "Gmsh.y" +#line 1236 "Gmsh.y" { std::string key((yyvsp[(3) - (5)].c)), val((yyvsp[(5) - (5)].c)); - floatOptions.clear(); charOptions.clear(); if(!gmsh_yystringsymbols.count(key)){ - Msg::ExchangeOnelabParameter(key, val, floatOptions, charOptions); gmsh_yystringsymbols[key] = val; } Free((yyvsp[(3) - (5)].c)); @@ -5782,12 +5783,12 @@ yyreduce: break; case 102: -#line 1251 "Gmsh.y" +#line 1245 "Gmsh.y" { floatOptions.clear(); charOptions.clear(); ;} break; case 103: -#line 1253 "Gmsh.y" +#line 1247 "Gmsh.y" { std::string key((yyvsp[(3) - (9)].c)), val((yyvsp[(6) - (9)].c)); if(!gmsh_yysymbols.count(key)){ @@ -5800,7 +5801,7 @@ yyreduce: break; case 105: -#line 1267 "Gmsh.y" +#line 1261 "Gmsh.y" { std::string name((yyvsp[(3) - (3)].c)); Msg::UndefineOnelabParameter(name); @@ -5809,7 +5810,7 @@ yyreduce: break; case 106: -#line 1275 "Gmsh.y" +#line 1269 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(doubleXstring)); doubleXstring v = {(yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].c)}; @@ -5818,7 +5819,7 @@ yyreduce: break; case 107: -#line 1281 "Gmsh.y" +#line 1275 "Gmsh.y" { doubleXstring v = {(yyvsp[(3) - (5)].d), (yyvsp[(5) - (5)].c)}; List_Add((yyval.l), &v); @@ -5826,7 +5827,7 @@ yyreduce: break; case 110: -#line 1293 "Gmsh.y" +#line 1287 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ @@ -5840,7 +5841,7 @@ yyreduce: break; case 111: -#line 1304 "Gmsh.y" +#line 1298 "Gmsh.y" { std::string key((yyvsp[(2) - (5)].c)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -5857,7 +5858,7 @@ yyreduce: break; case 112: -#line 1319 "Gmsh.y" +#line 1313 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); std::string val((yyvsp[(3) - (3)].c)); @@ -5868,7 +5869,7 @@ yyreduce: break; case 115: -#line 1335 "Gmsh.y" +#line 1329 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); double val = (yyvsp[(3) - (3)].d); @@ -5878,7 +5879,7 @@ yyreduce: break; case 116: -#line 1343 "Gmsh.y" +#line 1337 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); std::string val((yyvsp[(3) - (3)].c)); @@ -5889,7 +5890,7 @@ yyreduce: break; case 117: -#line 1352 "Gmsh.y" +#line 1346 "Gmsh.y" { std::string key((yyvsp[(2) - (5)].c)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -5905,14 +5906,14 @@ yyreduce: break; case 118: -#line 1370 "Gmsh.y" +#line 1364 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(1) - (1)].d); ;} break; case 119: -#line 1374 "Gmsh.y" +#line 1368 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName (std::string((yyvsp[(1) - (1)].c)), curPhysDim, @@ -5922,14 +5923,14 @@ yyreduce: break; case 120: -#line 1384 "Gmsh.y" +#line 1378 "Gmsh.y" { (yyval.l) = 0; ;} break; case 121: -#line 1388 "Gmsh.y" +#line 1382 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(Vertex*)); Vertex *v = FindPoint((int)(yyvsp[(4) - (5)].d)); @@ -5942,21 +5943,21 @@ yyreduce: break; case 122: -#line 1400 "Gmsh.y" +#line 1394 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = 0.; ;} break; case 123: -#line 1404 "Gmsh.y" +#line 1398 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; case 124: -#line 1414 "Gmsh.y" +#line 1408 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindPoint(num)){ @@ -5982,14 +5983,14 @@ yyreduce: break; case 125: -#line 1437 "Gmsh.y" +#line 1431 "Gmsh.y" { curPhysDim = 0; ;} break; case 126: -#line 1441 "Gmsh.y" +#line 1435 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_POINT)){ @@ -6008,7 +6009,7 @@ yyreduce: break; case 127: -#line 1457 "Gmsh.y" +#line 1451 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ double d; @@ -6030,7 +6031,7 @@ yyreduce: break; case 128: -#line 1479 "Gmsh.y" +#line 1473 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -6051,7 +6052,7 @@ yyreduce: break; case 129: -#line 1497 "Gmsh.y" +#line 1491 "Gmsh.y" { for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double dnum; @@ -6075,7 +6076,7 @@ yyreduce: break; case 130: -#line 1518 "Gmsh.y" +#line 1512 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -6096,7 +6097,7 @@ yyreduce: break; case 131: -#line 1536 "Gmsh.y" +#line 1530 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); if(FindCurve(num)){ @@ -6129,7 +6130,7 @@ yyreduce: break; case 132: -#line 1566 "Gmsh.y" +#line 1560 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); if(FindCurve(num)){ @@ -6162,7 +6163,7 @@ yyreduce: break; case 133: -#line 1596 "Gmsh.y" +#line 1590 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -6183,7 +6184,7 @@ yyreduce: break; case 134: -#line 1614 "Gmsh.y" +#line 1608 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -6204,7 +6205,7 @@ yyreduce: break; case 135: -#line 1632 "Gmsh.y" +#line 1626 "Gmsh.y" { int num = (int)(yyvsp[(3) - (11)].d); if(List_Nbr((yyvsp[(6) - (11)].l)) + (int)(yyvsp[(10) - (11)].d) + 1 != List_Nbr((yyvsp[(8) - (11)].l))){ @@ -6233,7 +6234,7 @@ yyreduce: break; case 136: -#line 1658 "Gmsh.y" +#line 1652 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindEdgeLoop(num)){ @@ -6254,7 +6255,7 @@ yyreduce: break; case 137: -#line 1676 "Gmsh.y" +#line 1670 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindCurve(num)){ @@ -6275,14 +6276,14 @@ yyreduce: break; case 138: -#line 1694 "Gmsh.y" +#line 1688 "Gmsh.y" { curPhysDim = 1; ;} break; case 139: -#line 1698 "Gmsh.y" +#line 1692 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_LINE)){ @@ -6301,7 +6302,7 @@ yyreduce: break; case 140: -#line 1717 "Gmsh.y" +#line 1711 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurface(num)){ @@ -6322,7 +6323,7 @@ yyreduce: break; case 141: -#line 1735 "Gmsh.y" +#line 1729 "Gmsh.y" { int num = (int)(yyvsp[(4) - (9)].d), type = 0; if(FindSurface(num)){ @@ -6364,7 +6365,7 @@ yyreduce: break; case 142: -#line 1774 "Gmsh.y" +#line 1768 "Gmsh.y" { myGmshSurface = 0; (yyval.s).Type = 0; @@ -6373,7 +6374,7 @@ yyreduce: break; case 143: -#line 1780 "Gmsh.y" +#line 1774 "Gmsh.y" { myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d)); (yyval.s).Type = 0; @@ -6382,7 +6383,7 @@ yyreduce: break; case 144: -#line 1786 "Gmsh.y" +#line 1780 "Gmsh.y" { int num = (int)(yyvsp[(4) - (10)].d); myGmshSurface = gmshParametricSurface::NewParametricSurface(num, (yyvsp[(7) - (10)].c), (yyvsp[(8) - (10)].c), (yyvsp[(9) - (10)].c)); @@ -6392,7 +6393,7 @@ yyreduce: break; case 145: -#line 1793 "Gmsh.y" +#line 1787 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){ @@ -6420,7 +6421,7 @@ yyreduce: break; case 146: -#line 1818 "Gmsh.y" +#line 1812 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){ @@ -6448,7 +6449,7 @@ yyreduce: break; case 147: -#line 1843 "Gmsh.y" +#line 1837 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurfaceLoop(num)){ @@ -6468,7 +6469,7 @@ yyreduce: break; case 148: -#line 1860 "Gmsh.y" +#line 1854 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurface(num)){ @@ -6490,7 +6491,7 @@ yyreduce: break; case 149: -#line 1880 "Gmsh.y" +#line 1874 "Gmsh.y" { int num = (int)(yyvsp[(4) - (12)].d); if(FindSurface(num)){ @@ -6526,14 +6527,14 @@ yyreduce: break; case 150: -#line 1913 "Gmsh.y" +#line 1907 "Gmsh.y" { curPhysDim = 2; ;} break; case 151: -#line 1917 "Gmsh.y" +#line 1911 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE)){ @@ -6552,7 +6553,7 @@ yyreduce: break; case 152: -#line 1937 "Gmsh.y" +#line 1931 "Gmsh.y" { yymsg(0, "'Complex Volume' command is deprecated: use 'Volume' instead"); int num = (int)(yyvsp[(4) - (8)].d); @@ -6573,7 +6574,7 @@ yyreduce: break; case 153: -#line 1955 "Gmsh.y" +#line 1949 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindVolume(num)){ @@ -6593,7 +6594,7 @@ yyreduce: break; case 154: -#line 1972 "Gmsh.y" +#line 1966 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindVolume(num)){ @@ -6612,14 +6613,14 @@ yyreduce: break; case 155: -#line 1988 "Gmsh.y" +#line 1982 "Gmsh.y" { curPhysDim = 3; ;} break; case 156: -#line 1992 "Gmsh.y" +#line 1986 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME)){ @@ -6638,7 +6639,7 @@ yyreduce: break; case 157: -#line 2014 "Gmsh.y" +#line 2008 "Gmsh.y" { TranslateShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); @@ -6646,7 +6647,7 @@ yyreduce: break; case 158: -#line 2019 "Gmsh.y" +#line 2013 "Gmsh.y" { RotateShapes((yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d), (yyvsp[(10) - (11)].l)); (yyval.l) = (yyvsp[(10) - (11)].l); @@ -6654,7 +6655,7 @@ yyreduce: break; case 159: -#line 2024 "Gmsh.y" +#line 2018 "Gmsh.y" { SymmetryShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(2) - (5)].v)[3], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); @@ -6662,7 +6663,7 @@ yyreduce: break; case 160: -#line 2029 "Gmsh.y" +#line 2023 "Gmsh.y" { DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d), (yyvsp[(8) - (9)].l)); (yyval.l) = (yyvsp[(8) - (9)].l); @@ -6670,7 +6671,7 @@ yyreduce: break; case 161: -#line 2034 "Gmsh.y" +#line 2028 "Gmsh.y" { DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].v)[0], (yyvsp[(5) - (9)].v)[1], (yyvsp[(5) - (9)].v)[2], (yyvsp[(8) - (9)].l)); (yyval.l) = (yyvsp[(8) - (9)].l); @@ -6678,7 +6679,7 @@ yyreduce: break; case 162: -#line 2039 "Gmsh.y" +#line 2033 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); if(!strcmp((yyvsp[(1) - (4)].c), "Duplicata")){ @@ -6704,7 +6705,7 @@ yyreduce: break; case 163: -#line 2062 "Gmsh.y" +#line 2056 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); IntersectCurvesWithSurface((yyvsp[(4) - (9)].l), (int)(yyvsp[(8) - (9)].d), (yyval.l)); @@ -6713,7 +6714,7 @@ yyreduce: break; case 164: -#line 2068 "Gmsh.y" +#line 2062 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape*)); List_T *tmp = ListOfDouble2ListOfInt((yyvsp[(7) - (9)].l)); @@ -6724,31 +6725,31 @@ yyreduce: break; case 165: -#line 2078 "Gmsh.y" +#line 2072 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 166: -#line 2079 "Gmsh.y" +#line 2073 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 167: -#line 2084 "Gmsh.y" +#line 2078 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); ;} break; case 168: -#line 2088 "Gmsh.y" +#line 2082 "Gmsh.y" { List_Add((yyval.l), &(yyvsp[(2) - (2)].s)); ;} break; case 169: -#line 2092 "Gmsh.y" +#line 2086 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -6774,7 +6775,7 @@ yyreduce: break; case 170: -#line 2115 "Gmsh.y" +#line 2109 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -6800,7 +6801,7 @@ yyreduce: break; case 171: -#line 2138 "Gmsh.y" +#line 2132 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -6826,7 +6827,7 @@ yyreduce: break; case 172: -#line 2161 "Gmsh.y" +#line 2155 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -6852,7 +6853,7 @@ yyreduce: break; case 173: -#line 2189 "Gmsh.y" +#line 2183 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(7) - (8)].l)) == 4){ @@ -6876,7 +6877,7 @@ yyreduce: break; case 174: -#line 2210 "Gmsh.y" +#line 2204 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) int t = (int)(yyvsp[(4) - (10)].d); @@ -6905,7 +6906,7 @@ yyreduce: break; case 175: -#line 2237 "Gmsh.y" +#line 2231 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(12) - (14)].l)) == 0){ @@ -6928,7 +6929,7 @@ yyreduce: break; case 176: -#line 2258 "Gmsh.y" +#line 2252 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(14) - (16)].l)) == 0){ @@ -6952,7 +6953,7 @@ yyreduce: break; case 177: -#line 2279 "Gmsh.y" +#line 2273 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(10) - (12)].l)) == 1){ @@ -6975,7 +6976,7 @@ yyreduce: break; case 178: -#line 2299 "Gmsh.y" +#line 2293 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (8)].c), "Union")){ @@ -7090,7 +7091,7 @@ yyreduce: break; case 179: -#line 2411 "Gmsh.y" +#line 2405 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (8)].c), "MathEval")){ @@ -7112,7 +7113,7 @@ yyreduce: break; case 180: -#line 2430 "Gmsh.y" +#line 2424 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (6)].c), "CutMesh")){ @@ -7153,7 +7154,7 @@ yyreduce: break; case 181: -#line 2469 "Gmsh.y" +#line 2463 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (14)].c), "Cylinder") && List_Nbr((yyvsp[(12) - (14)].l)) == 1){ @@ -7259,7 +7260,7 @@ yyreduce: break; case 182: -#line 2577 "Gmsh.y" +#line 2571 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -7271,7 +7272,7 @@ yyreduce: break; case 183: -#line 2586 "Gmsh.y" +#line 2580 "Gmsh.y" { #if defined(HAVE_MESH) GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d)); @@ -7280,7 +7281,7 @@ yyreduce: break; case 184: -#line 2592 "Gmsh.y" +#line 2586 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (6)].c), "View")){ @@ -7298,7 +7299,7 @@ yyreduce: break; case 185: -#line 2607 "Gmsh.y" +#line 2601 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){ ClearProject(); @@ -7329,7 +7330,7 @@ yyreduce: break; case 186: -#line 2635 "Gmsh.y" +#line 2629 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){ @@ -7344,7 +7345,7 @@ yyreduce: break; case 187: -#line 2652 "Gmsh.y" +#line 2646 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -7356,7 +7357,7 @@ yyreduce: break; case 188: -#line 2661 "Gmsh.y" +#line 2655 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(5) - (6)].l)); i++){ Shape TheShape; @@ -7368,7 +7369,7 @@ yyreduce: break; case 189: -#line 2675 "Gmsh.y" +#line 2669 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 1, false); @@ -7377,7 +7378,7 @@ yyreduce: break; case 190: -#line 2681 "Gmsh.y" +#line 2675 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 0, false); @@ -7386,7 +7387,7 @@ yyreduce: break; case 191: -#line 2687 "Gmsh.y" +#line 2681 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -7398,7 +7399,7 @@ yyreduce: break; case 192: -#line 2696 "Gmsh.y" +#line 2690 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -7410,7 +7411,7 @@ yyreduce: break; case 193: -#line 2705 "Gmsh.y" +#line 2699 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -7422,7 +7423,7 @@ yyreduce: break; case 194: -#line 2714 "Gmsh.y" +#line 2708 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -7434,7 +7435,7 @@ yyreduce: break; case 195: -#line 2728 "Gmsh.y" +#line 2722 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Include")){ std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c)); @@ -7482,7 +7483,7 @@ yyreduce: break; case 196: -#line 2773 "Gmsh.y" +#line 2767 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){ @@ -7502,7 +7503,7 @@ yyreduce: break; case 197: -#line 2790 "Gmsh.y" +#line 2784 "Gmsh.y" { #if defined(HAVE_POST) && defined(HAVE_MESH) if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh") && !strcmp((yyvsp[(3) - (7)].c), "View")){ @@ -7520,7 +7521,7 @@ yyreduce: break; case 198: -#line 2805 "Gmsh.y" +#line 2799 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){ SleepInSeconds((yyvsp[(2) - (3)].d)); @@ -7542,7 +7543,7 @@ yyreduce: break; case 199: -#line 2824 "Gmsh.y" +#line 2818 "Gmsh.y" { #if defined(HAVE_PLUGINS) try { @@ -7557,7 +7558,7 @@ yyreduce: break; case 200: -#line 2836 "Gmsh.y" +#line 2830 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews")) @@ -7584,14 +7585,14 @@ yyreduce: break; case 201: -#line 2860 "Gmsh.y" +#line 2854 "Gmsh.y" { Msg::Exit(0); ;} break; case 202: -#line 2864 "Gmsh.y" +#line 2858 "Gmsh.y" { gmsh_yyerrorstate = 999; // this will be checked when yyparse returns YYABORT; @@ -7599,7 +7600,7 @@ yyreduce: break; case 203: -#line 2869 "Gmsh.y" +#line 2863 "Gmsh.y" { // FIXME: this is a hack to force a transfer from the old DB to // the new DB. This will become unnecessary if/when we fill the @@ -7609,7 +7610,7 @@ yyreduce: break; case 204: -#line 2876 "Gmsh.y" +#line 2870 "Gmsh.y" { CTX::instance()->forcedBBox = 0; GModel::current()->importGEOInternals(); @@ -7618,7 +7619,7 @@ yyreduce: break; case 205: -#line 2882 "Gmsh.y" +#line 2876 "Gmsh.y" { CTX::instance()->forcedBBox = 1; SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d)); @@ -7626,7 +7627,7 @@ yyreduce: break; case 206: -#line 2887 "Gmsh.y" +#line 2881 "Gmsh.y" { #if defined(HAVE_OPENGL) drawContext::global()->draw(); @@ -7635,7 +7636,7 @@ yyreduce: break; case 207: -#line 2893 "Gmsh.y" +#line 2887 "Gmsh.y" { #if defined(HAVE_OPENGL) CTX::instance()->mesh.changed = ENT_ALL; @@ -7646,21 +7647,21 @@ yyreduce: break; case 208: -#line 2901 "Gmsh.y" +#line 2895 "Gmsh.y" { GModel::current()->createTopologyFromMesh(); ;} break; case 209: -#line 2905 "Gmsh.y" +#line 2899 "Gmsh.y" { GModel::current()->createTopologyFromMesh(1); ;} break; case 210: -#line 2909 "Gmsh.y" +#line 2903 "Gmsh.y" { GModel::current()->importGEOInternals(); GModel::current()->refineMesh(CTX::instance()->mesh.secondOrderLinear); @@ -7668,7 +7669,7 @@ yyreduce: break; case 211: -#line 2915 "Gmsh.y" +#line 2909 "Gmsh.y" { int lock = CTX::instance()->lock; CTX::instance()->lock = 0; @@ -7725,7 +7726,7 @@ yyreduce: break; case 212: -#line 2969 "Gmsh.y" +#line 2963 "Gmsh.y" { #if defined(HAVE_MESH) SetOrderN(GModel::current(), (yyvsp[(2) - (3)].d), CTX::instance()->mesh.secondOrderLinear, @@ -7736,7 +7737,7 @@ yyreduce: break; case 213: -#line 2982 "Gmsh.y" +#line 2976 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d); @@ -7756,7 +7757,7 @@ yyreduce: break; case 214: -#line 2999 "Gmsh.y" +#line 2993 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d); @@ -7776,7 +7777,7 @@ yyreduce: break; case 215: -#line 3016 "Gmsh.y" +#line 3010 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d); @@ -7800,7 +7801,7 @@ yyreduce: break; case 216: -#line 3037 "Gmsh.y" +#line 3031 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d); @@ -7824,7 +7825,7 @@ yyreduce: break; case 217: -#line 3058 "Gmsh.y" +#line 3052 "Gmsh.y" { if(ImbricatedLoop <= 0){ yymsg(0, "Invalid For/EndFor loop"); @@ -7862,7 +7863,7 @@ yyreduce: break; case 218: -#line 3093 "Gmsh.y" +#line 3087 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction ((yyvsp[(2) - (2)].c), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -7873,7 +7874,7 @@ yyreduce: break; case 219: -#line 3101 "Gmsh.y" +#line 3095 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction (&gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -7882,7 +7883,7 @@ yyreduce: break; case 220: -#line 3107 "Gmsh.y" +#line 3101 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction ((yyvsp[(2) - (3)].c), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -7892,20 +7893,20 @@ yyreduce: break; case 221: -#line 3114 "Gmsh.y" +#line 3108 "Gmsh.y" { if(!(yyvsp[(3) - (4)].d)) skip_until("If", "EndIf"); ;} break; case 222: -#line 3118 "Gmsh.y" +#line 3112 "Gmsh.y" { ;} break; case 223: -#line 3127 "Gmsh.y" +#line 3121 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (5)].l), @@ -7916,7 +7917,7 @@ yyreduce: break; case 224: -#line 3135 "Gmsh.y" +#line 3129 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (11)].l), @@ -7927,7 +7928,7 @@ yyreduce: break; case 225: -#line 3143 "Gmsh.y" +#line 3137 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (13)].l), @@ -7938,7 +7939,7 @@ yyreduce: break; case 226: -#line 3151 "Gmsh.y" +#line 3145 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -7947,7 +7948,7 @@ yyreduce: break; case 227: -#line 3157 "Gmsh.y" +#line 3151 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (7)].l), @@ -7958,7 +7959,7 @@ yyreduce: break; case 228: -#line 3165 "Gmsh.y" +#line 3159 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -7967,7 +7968,7 @@ yyreduce: break; case 229: -#line 3171 "Gmsh.y" +#line 3165 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (13)].l), @@ -7978,7 +7979,7 @@ yyreduce: break; case 230: -#line 3179 "Gmsh.y" +#line 3173 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -7987,7 +7988,7 @@ yyreduce: break; case 231: -#line 3185 "Gmsh.y" +#line 3179 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (15)].l), @@ -7998,7 +7999,7 @@ yyreduce: break; case 232: -#line 3193 "Gmsh.y" +#line 3187 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8007,7 +8008,7 @@ yyreduce: break; case 233: -#line 3199 "Gmsh.y" +#line 3193 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(3) - (6)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., @@ -8017,7 +8018,7 @@ yyreduce: break; case 234: -#line 3207 "Gmsh.y" +#line 3201 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d), @@ -8027,7 +8028,7 @@ yyreduce: break; case 235: -#line 3214 "Gmsh.y" +#line 3208 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (8)].d), @@ -8037,7 +8038,7 @@ yyreduce: break; case 236: -#line 3221 "Gmsh.y" +#line 3215 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (8)].d), @@ -8047,7 +8048,7 @@ yyreduce: break; case 237: -#line 3228 "Gmsh.y" +#line 3222 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -8057,7 +8058,7 @@ yyreduce: break; case 238: -#line 3235 "Gmsh.y" +#line 3229 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -8067,7 +8068,7 @@ yyreduce: break; case 239: -#line 3242 "Gmsh.y" +#line 3236 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -8077,7 +8078,7 @@ yyreduce: break; case 240: -#line 3249 "Gmsh.y" +#line 3243 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (14)].d), @@ -8087,7 +8088,7 @@ yyreduce: break; case 241: -#line 3256 "Gmsh.y" +#line 3250 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d), @@ -8097,7 +8098,7 @@ yyreduce: break; case 242: -#line 3263 "Gmsh.y" +#line 3257 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d), @@ -8107,7 +8108,7 @@ yyreduce: break; case 243: -#line 3270 "Gmsh.y" +#line 3264 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8116,7 +8117,7 @@ yyreduce: break; case 244: -#line 3276 "Gmsh.y" +#line 3270 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -8126,7 +8127,7 @@ yyreduce: break; case 245: -#line 3283 "Gmsh.y" +#line 3277 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8135,7 +8136,7 @@ yyreduce: break; case 246: -#line 3289 "Gmsh.y" +#line 3283 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -8145,7 +8146,7 @@ yyreduce: break; case 247: -#line 3296 "Gmsh.y" +#line 3290 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8154,7 +8155,7 @@ yyreduce: break; case 248: -#line 3302 "Gmsh.y" +#line 3296 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -8164,7 +8165,7 @@ yyreduce: break; case 249: -#line 3309 "Gmsh.y" +#line 3303 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8173,7 +8174,7 @@ yyreduce: break; case 250: -#line 3315 "Gmsh.y" +#line 3309 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d), @@ -8183,7 +8184,7 @@ yyreduce: break; case 251: -#line 3322 "Gmsh.y" +#line 3316 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8192,7 +8193,7 @@ yyreduce: break; case 252: -#line 3328 "Gmsh.y" +#line 3322 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d), @@ -8202,7 +8203,7 @@ yyreduce: break; case 253: -#line 3335 "Gmsh.y" +#line 3329 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8211,7 +8212,7 @@ yyreduce: break; case 254: -#line 3341 "Gmsh.y" +#line 3335 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d), @@ -8221,7 +8222,7 @@ yyreduce: break; case 255: -#line 3348 "Gmsh.y" +#line 3342 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8230,7 +8231,7 @@ yyreduce: break; case 256: -#line 3354 "Gmsh.y" +#line 3348 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d), @@ -8240,7 +8241,7 @@ yyreduce: break; case 257: -#line 3361 "Gmsh.y" +#line 3355 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8249,7 +8250,7 @@ yyreduce: break; case 258: -#line 3367 "Gmsh.y" +#line 3361 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d), @@ -8259,7 +8260,7 @@ yyreduce: break; case 259: -#line 3374 "Gmsh.y" +#line 3368 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; @@ -8268,7 +8269,7 @@ yyreduce: break; case 260: -#line 3380 "Gmsh.y" +#line 3374 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d), @@ -8278,19 +8279,19 @@ yyreduce: break; case 261: -#line 3391 "Gmsh.y" +#line 3385 "Gmsh.y" { ;} break; case 262: -#line 3394 "Gmsh.y" +#line 3388 "Gmsh.y" { ;} break; case 263: -#line 3400 "Gmsh.y" +#line 3394 "Gmsh.y" { int n = (int)fabs((yyvsp[(3) - (5)].d)); if(n){ // we accept n==0 to easily disable layers @@ -8305,7 +8306,7 @@ yyreduce: break; case 264: -#line 3412 "Gmsh.y" +#line 3406 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l)); @@ -8328,7 +8329,7 @@ yyreduce: break; case 265: -#line 3432 "Gmsh.y" +#line 3426 "Gmsh.y" { yymsg(0, "Explicit region numbers in layers are deprecated"); extr.mesh.ExtrudeMesh = true; @@ -8354,77 +8355,77 @@ yyreduce: break; case 266: -#line 3456 "Gmsh.y" +#line 3450 "Gmsh.y" { extr.mesh.ScaleLast = true; ;} break; case 267: -#line 3461 "Gmsh.y" +#line 3455 "Gmsh.y" { extr.mesh.Recombine = true; ;} break; case 268: -#line 3465 "Gmsh.y" +#line 3459 "Gmsh.y" { yymsg(0, "Keyword 'QuadTriSngl' deprecated. Use 'QuadTriNoNewVerts' instead."); ;} break; case 269: -#line 3469 "Gmsh.y" +#line 3463 "Gmsh.y" { yymsg(0, "Keyword 'QuadTriSngl' deprecated. Use 'QuadTriNoNewVerts' instead."); ;} break; case 270: -#line 3473 "Gmsh.y" +#line 3467 "Gmsh.y" { yymsg(0, "Method 'QuadTriDbl' deprecated. Use 'QuadTriAddVerts' instead, which has no requirement for the number of extrusion layers and meshes with body-centered vertices."); ;} break; case 271: -#line 3477 "Gmsh.y" +#line 3471 "Gmsh.y" { yymsg(0, "Method 'QuadTriDbl' deprecated. Use 'QuadTriAddVerts' instead, which has no requirement for the number of extrusion layers and meshes with body-centered vertices."); ;} break; case 272: -#line 3481 "Gmsh.y" +#line 3475 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1; ;} break; case 273: -#line 3485 "Gmsh.y" +#line 3479 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_ADDVERTS_1_RECOMB; ;} break; case 274: -#line 3489 "Gmsh.y" +#line 3483 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1; ;} break; case 275: -#line 3493 "Gmsh.y" +#line 3487 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_NOVERTS_1_RECOMB; ;} break; case 276: -#line 3497 "Gmsh.y" +#line 3491 "Gmsh.y" { int num = (int)(yyvsp[(3) - (9)].d); if(FindSurface(num)){ @@ -8446,7 +8447,7 @@ yyreduce: break; case 277: -#line 3516 "Gmsh.y" +#line 3510 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (6)].c), "Index")) extr.mesh.BoundaryLayerIndex = (yyvsp[(4) - (6)].d); @@ -8457,14 +8458,14 @@ yyreduce: break; case 278: -#line 3528 "Gmsh.y" +#line 3522 "Gmsh.y" { (yyval.v)[0] = (yyval.v)[1] = 1.; ;} break; case 279: -#line 3532 "Gmsh.y" +#line 3526 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power")) (yyval.v)[0] = 1.; @@ -8480,14 +8481,14 @@ yyreduce: break; case 280: -#line 3547 "Gmsh.y" +#line 3541 "Gmsh.y" { (yyval.i) = -1; // left ;} break; case 281: -#line 3551 "Gmsh.y" +#line 3545 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Right")) (yyval.i) = 1; @@ -8504,35 +8505,35 @@ yyreduce: break; case 282: -#line 3567 "Gmsh.y" +#line 3561 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; case 283: -#line 3571 "Gmsh.y" +#line 3565 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; case 284: -#line 3576 "Gmsh.y" +#line 3570 "Gmsh.y" { (yyval.i) = 45; ;} break; case 285: -#line 3580 "Gmsh.y" +#line 3574 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; case 286: -#line 3587 "Gmsh.y" +#line 3581 "Gmsh.y" { int type = (int)(yyvsp[(6) - (7)].v)[0]; double coef = fabs((yyvsp[(6) - (7)].v)[1]); @@ -8591,7 +8592,7 @@ yyreduce: break; case 287: -#line 3643 "Gmsh.y" +#line 3637 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (6)].l)); if(k != 0 && k != 3 && k != 4){ @@ -8664,7 +8665,7 @@ yyreduce: break; case 288: -#line 3713 "Gmsh.y" +#line 3707 "Gmsh.y" { yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)"); List_Delete((yyvsp[(7) - (8)].l)); @@ -8672,7 +8673,7 @@ yyreduce: break; case 289: -#line 3718 "Gmsh.y" +#line 3712 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (5)].l)); if(k != 0 && k != 6 && k != 8){ @@ -8742,7 +8743,7 @@ yyreduce: break; case 290: -#line 3785 "Gmsh.y" +#line 3779 "Gmsh.y" { if(!(yyvsp[(2) - (3)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); @@ -8781,7 +8782,7 @@ yyreduce: break; case 291: -#line 3821 "Gmsh.y" +#line 3815 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (7)].l)); i++){ double d; @@ -8792,7 +8793,7 @@ yyreduce: break; case 292: -#line 3829 "Gmsh.y" +#line 3823 "Gmsh.y" { if(!(yyvsp[(3) - (5)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); @@ -8838,7 +8839,7 @@ yyreduce: break; case 293: -#line 3872 "Gmsh.y" +#line 3866 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Volumes); @@ -8880,7 +8881,7 @@ yyreduce: break; case 294: -#line 3911 "Gmsh.y" +#line 3905 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ double d; @@ -8903,7 +8904,7 @@ yyreduce: break; case 295: -#line 3931 "Gmsh.y" +#line 3925 "Gmsh.y" { if(List_Nbr((yyvsp[(5) - (6)].l)) != List_Nbr((yyvsp[(3) - (6)].l))){ yymsg(0, "Number of master (%d) different from number of slave (%d) lines", @@ -8933,7 +8934,7 @@ yyreduce: break; case 296: -#line 3959 "Gmsh.y" +#line 3953 "Gmsh.y" { if (List_Nbr((yyvsp[(5) - (12)].l)) != List_Nbr((yyvsp[(10) - (12)].l))){ yymsg(0, "Number of master surface edges (%d) different from number of " @@ -8975,7 +8976,7 @@ yyreduce: break; case 297: -#line 3998 "Gmsh.y" +#line 3992 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -9001,7 +9002,7 @@ yyreduce: break; case 298: -#line 4021 "Gmsh.y" +#line 4015 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -9027,21 +9028,21 @@ yyreduce: break; case 299: -#line 4044 "Gmsh.y" +#line 4038 "Gmsh.y" { Msg::Error("Point in Volume not implemented yet"); ;} break; case 300: -#line 4048 "Gmsh.y" +#line 4042 "Gmsh.y" { Msg::Error("Line in Volume not implemented yet"); ;} break; case 301: -#line 4052 "Gmsh.y" +#line 4046 "Gmsh.y" { Volume *v = FindVolume((int)(yyvsp[(8) - (10)].d)); if(v){ @@ -9067,7 +9068,7 @@ yyreduce: break; case 302: -#line 4075 "Gmsh.y" +#line 4069 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); @@ -9109,7 +9110,7 @@ yyreduce: break; case 303: -#line 4114 "Gmsh.y" +#line 4108 "Gmsh.y" { if(!(yyvsp[(3) - (4)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Curves); @@ -9151,14 +9152,14 @@ yyreduce: break; case 304: -#line 4159 "Gmsh.y" +#line 4153 "Gmsh.y" { ReplaceAllDuplicates(); ;} break; case 305: -#line 4163 "Gmsh.y" +#line 4157 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")) ReplaceAllDuplicates(); @@ -9171,7 +9172,7 @@ yyreduce: break; case 306: -#line 4173 "Gmsh.y" +#line 4167 "Gmsh.y" { if(List_Nbr((yyvsp[(4) - (6)].l)) >= 2){ double d; @@ -9204,22 +9205,22 @@ yyreduce: break; case 307: -#line 4207 "Gmsh.y" +#line 4201 "Gmsh.y" { (yyval.c) = (char*)"Homology"; ;} break; case 308: -#line 4208 "Gmsh.y" +#line 4202 "Gmsh.y" { (yyval.c) = (char*)"Cohomology"; ;} break; case 309: -#line 4209 "Gmsh.y" +#line 4203 "Gmsh.y" { (yyval.c) = (char*)"Betti"; ;} break; case 310: -#line 4214 "Gmsh.y" +#line 4208 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < 4; i++) dim.push_back(i); @@ -9228,7 +9229,7 @@ yyreduce: break; case 311: -#line 4220 "Gmsh.y" +#line 4214 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){ @@ -9243,7 +9244,7 @@ yyreduce: break; case 312: -#line 4232 "Gmsh.y" +#line 4226 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){ @@ -9264,7 +9265,7 @@ yyreduce: break; case 313: -#line 4250 "Gmsh.y" +#line 4244 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(6) - (10)].l)); i++){ @@ -9290,47 +9291,47 @@ yyreduce: break; case 314: -#line 4277 "Gmsh.y" +#line 4271 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 315: -#line 4278 "Gmsh.y" +#line 4272 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (3)].d); ;} break; case 316: -#line 4279 "Gmsh.y" +#line 4273 "Gmsh.y" { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} break; case 317: -#line 4280 "Gmsh.y" +#line 4274 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; case 318: -#line 4281 "Gmsh.y" +#line 4275 "Gmsh.y" { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} break; case 319: -#line 4282 "Gmsh.y" +#line 4276 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} break; case 320: -#line 4283 "Gmsh.y" +#line 4277 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} break; case 321: -#line 4284 "Gmsh.y" +#line 4278 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} break; case 322: -#line 4286 "Gmsh.y" +#line 4280 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -9340,327 +9341,327 @@ yyreduce: break; case 323: -#line 4292 "Gmsh.y" +#line 4286 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} break; case 324: -#line 4293 "Gmsh.y" +#line 4287 "Gmsh.y" { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} break; case 325: -#line 4294 "Gmsh.y" +#line 4288 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} break; case 326: -#line 4295 "Gmsh.y" +#line 4289 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} break; case 327: -#line 4296 "Gmsh.y" +#line 4290 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} break; case 328: -#line 4297 "Gmsh.y" +#line 4291 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} break; case 329: -#line 4298 "Gmsh.y" +#line 4292 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} break; case 330: -#line 4299 "Gmsh.y" +#line 4293 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} break; case 331: -#line 4300 "Gmsh.y" +#line 4294 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} break; case 332: -#line 4301 "Gmsh.y" +#line 4295 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} break; case 333: -#line 4302 "Gmsh.y" +#line 4296 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} break; case 334: -#line 4303 "Gmsh.y" +#line 4297 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; case 335: -#line 4304 "Gmsh.y" +#line 4298 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; case 336: -#line 4305 "Gmsh.y" +#line 4299 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; case 337: -#line 4306 "Gmsh.y" +#line 4300 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; case 338: -#line 4307 "Gmsh.y" +#line 4301 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; case 339: -#line 4308 "Gmsh.y" +#line 4302 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; case 340: -#line 4309 "Gmsh.y" +#line 4303 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; case 341: -#line 4310 "Gmsh.y" +#line 4304 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; case 342: -#line 4311 "Gmsh.y" +#line 4305 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; case 343: -#line 4312 "Gmsh.y" +#line 4306 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; case 344: -#line 4313 "Gmsh.y" +#line 4307 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; case 345: -#line 4314 "Gmsh.y" +#line 4308 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; case 346: -#line 4315 "Gmsh.y" +#line 4309 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; case 347: -#line 4316 "Gmsh.y" +#line 4310 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; case 348: -#line 4317 "Gmsh.y" +#line 4311 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; case 349: -#line 4318 "Gmsh.y" +#line 4312 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; case 350: -#line 4319 "Gmsh.y" +#line 4313 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; case 351: -#line 4320 "Gmsh.y" +#line 4314 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5); ;} break; case 352: -#line 4321 "Gmsh.y" +#line 4315 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 353: -#line 4322 "Gmsh.y" +#line 4316 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 354: -#line 4323 "Gmsh.y" +#line 4317 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; case 355: -#line 4324 "Gmsh.y" +#line 4318 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; case 356: -#line 4327 "Gmsh.y" +#line 4321 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; case 357: -#line 4328 "Gmsh.y" +#line 4322 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; case 358: -#line 4329 "Gmsh.y" +#line 4323 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; case 359: -#line 4330 "Gmsh.y" +#line 4324 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; case 360: -#line 4331 "Gmsh.y" +#line 4325 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; case 361: -#line 4332 "Gmsh.y" +#line 4326 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; case 362: -#line 4333 "Gmsh.y" +#line 4327 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; case 363: -#line 4334 "Gmsh.y" +#line 4328 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; case 364: -#line 4335 "Gmsh.y" +#line 4329 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; case 365: -#line 4336 "Gmsh.y" +#line 4330 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; case 366: -#line 4337 "Gmsh.y" +#line 4331 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; case 367: -#line 4338 "Gmsh.y" +#line 4332 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; case 368: -#line 4339 "Gmsh.y" +#line 4333 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; case 369: -#line 4340 "Gmsh.y" +#line 4334 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; case 370: -#line 4341 "Gmsh.y" +#line 4335 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; case 371: -#line 4342 "Gmsh.y" +#line 4336 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; case 372: -#line 4343 "Gmsh.y" +#line 4337 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; case 373: -#line 4344 "Gmsh.y" +#line 4338 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5); ;} break; case 374: -#line 4345 "Gmsh.y" +#line 4339 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 375: -#line 4346 "Gmsh.y" +#line 4340 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; case 376: -#line 4347 "Gmsh.y" +#line 4341 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; case 377: -#line 4348 "Gmsh.y" +#line 4342 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; case 378: -#line 4357 "Gmsh.y" +#line 4351 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; case 379: -#line 4358 "Gmsh.y" +#line 4352 "Gmsh.y" { (yyval.d) = 3.141592653589793; ;} break; case 380: -#line 4359 "Gmsh.y" +#line 4353 "Gmsh.y" { (yyval.d) = Msg::GetCommRank(); ;} break; case 381: -#line 4360 "Gmsh.y" +#line 4354 "Gmsh.y" { (yyval.d) = Msg::GetCommSize(); ;} break; case 382: -#line 4361 "Gmsh.y" +#line 4355 "Gmsh.y" { (yyval.d) = GetGmshMajorVersion(); ;} break; case 383: -#line 4362 "Gmsh.y" +#line 4356 "Gmsh.y" { (yyval.d) = GetGmshMinorVersion(); ;} break; case 384: -#line 4363 "Gmsh.y" +#line 4357 "Gmsh.y" { (yyval.d) = GetGmshPatchVersion(); ;} break; case 385: -#line 4364 "Gmsh.y" +#line 4358 "Gmsh.y" { (yyval.d) = Cpu(); ;} break; case 386: -#line 4365 "Gmsh.y" +#line 4359 "Gmsh.y" { (yyval.d) = GetMemoryUsage()/1024./1024.; ;} break; case 387: -#line 4370 "Gmsh.y" +#line 4364 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c)); @@ -9680,7 +9681,7 @@ yyreduce: break; case 388: -#line 4388 "Gmsh.y" +#line 4382 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -9701,7 +9702,7 @@ yyreduce: break; case 389: -#line 4406 "Gmsh.y" +#line 4400 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(2) - (4)].c)); @@ -9716,7 +9717,7 @@ yyreduce: break; case 390: -#line 4418 "Gmsh.y" +#line 4412 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -9736,7 +9737,7 @@ yyreduce: break; case 391: -#line 4435 "Gmsh.y" +#line 4429 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -9757,7 +9758,7 @@ yyreduce: break; case 392: -#line 4456 "Gmsh.y" +#line 4450 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), (yyval.d)); Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c)); @@ -9765,7 +9766,7 @@ yyreduce: break; case 393: -#line 4461 "Gmsh.y" +#line 4455 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d)); Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c)); @@ -9773,7 +9774,7 @@ yyreduce: break; case 394: -#line 4466 "Gmsh.y" +#line 4460 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -9786,7 +9787,7 @@ yyreduce: break; case 395: -#line 4476 "Gmsh.y" +#line 4470 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -9799,7 +9800,7 @@ yyreduce: break; case 396: -#line 4486 "Gmsh.y" +#line 4480 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); @@ -9807,7 +9808,7 @@ yyreduce: break; case 397: -#line 4491 "Gmsh.y" +#line 4485 "Gmsh.y" { std::string s((yyvsp[(3) - (6)].c)), substr((yyvsp[(5) - (6)].c)); if(s.find(substr) != std::string::npos) @@ -9819,7 +9820,7 @@ yyreduce: break; case 398: -#line 4500 "Gmsh.y" +#line 4494 "Gmsh.y" { (yyval.d) = strcmp((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c)); @@ -9827,7 +9828,7 @@ yyreduce: break; case 399: -#line 4505 "Gmsh.y" +#line 4499 "Gmsh.y" { int align = 0, font = 0, fontsize = CTX::instance()->glFontSize; if(List_Nbr((yyvsp[(3) - (4)].l)) % 2){ @@ -9854,70 +9855,70 @@ yyreduce: break; case 400: -#line 4532 "Gmsh.y" +#line 4526 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); ;} break; case 401: -#line 4536 "Gmsh.y" +#line 4530 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; ;} break; case 402: -#line 4540 "Gmsh.y" +#line 4534 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; case 403: -#line 4544 "Gmsh.y" +#line 4538 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; ;} break; case 404: -#line 4548 "Gmsh.y" +#line 4542 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; ;} break; case 405: -#line 4555 "Gmsh.y" +#line 4549 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (11)].d); (yyval.v)[1] = (yyvsp[(4) - (11)].d); (yyval.v)[2] = (yyvsp[(6) - (11)].d); (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d); ;} break; case 406: -#line 4559 "Gmsh.y" +#line 4553 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (9)].d); (yyval.v)[1] = (yyvsp[(4) - (9)].d); (yyval.v)[2] = (yyvsp[(6) - (9)].d); (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0; ;} break; case 407: -#line 4563 "Gmsh.y" +#line 4557 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 408: -#line 4567 "Gmsh.y" +#line 4561 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; case 409: -#line 4574 "Gmsh.y" +#line 4568 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); @@ -9925,14 +9926,14 @@ yyreduce: break; case 410: -#line 4579 "Gmsh.y" +#line 4573 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); ;} break; case 411: -#line 4586 "Gmsh.y" +#line 4580 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -9940,14 +9941,14 @@ yyreduce: break; case 412: -#line 4591 "Gmsh.y" +#line 4585 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 413: -#line 4595 "Gmsh.y" +#line 4589 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); @@ -9955,14 +9956,14 @@ yyreduce: break; case 414: -#line 4600 "Gmsh.y" +#line 4594 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 415: -#line 4604 "Gmsh.y" +#line 4598 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -9973,7 +9974,7 @@ yyreduce: break; case 416: -#line 4612 "Gmsh.y" +#line 4606 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -9984,14 +9985,14 @@ yyreduce: break; case 417: -#line 4623 "Gmsh.y" +#line 4617 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 418: -#line 4627 "Gmsh.y" +#line 4621 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -10003,7 +10004,7 @@ yyreduce: break; case 419: -#line 4639 "Gmsh.y" +#line 4633 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -10014,7 +10015,7 @@ yyreduce: break; case 420: -#line 4647 "Gmsh.y" +#line 4641 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -10025,7 +10026,7 @@ yyreduce: break; case 421: -#line 4655 "Gmsh.y" +#line 4649 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); @@ -10035,7 +10036,7 @@ yyreduce: break; case 422: -#line 4662 "Gmsh.y" +#line 4656 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d)){ //|| ($1 < $3 && $5 < 0) || ($1 > $3 && $5 > 0) @@ -10048,7 +10049,7 @@ yyreduce: break; case 423: -#line 4672 "Gmsh.y" +#line 4666 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -10071,35 +10072,35 @@ yyreduce: break; case 424: -#line 4692 "Gmsh.y" +#line 4686 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(0); ;} break; case 425: -#line 4696 "Gmsh.y" +#line 4690 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(1); ;} break; case 426: -#line 4700 "Gmsh.y" +#line 4694 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(2); ;} break; case 427: -#line 4704 "Gmsh.y" +#line 4698 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(3); ;} break; case 428: -#line 4708 "Gmsh.y" +#line 4702 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -10131,7 +10132,7 @@ yyreduce: break; case 429: -#line 4737 "Gmsh.y" +#line 4731 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -10163,7 +10164,7 @@ yyreduce: break; case 430: -#line 4766 "Gmsh.y" +#line 4760 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -10195,7 +10196,7 @@ yyreduce: break; case 431: -#line 4795 "Gmsh.y" +#line 4789 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -10227,7 +10228,7 @@ yyreduce: break; case 432: -#line 4824 "Gmsh.y" +#line 4818 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -10240,7 +10241,7 @@ yyreduce: break; case 433: -#line 4834 "Gmsh.y" +#line 4828 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -10253,7 +10254,7 @@ yyreduce: break; case 434: -#line 4844 "Gmsh.y" +#line 4838 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -10268,7 +10269,7 @@ yyreduce: break; case 435: -#line 4857 "Gmsh.y" +#line 4851 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -10283,7 +10284,7 @@ yyreduce: break; case 436: -#line 4869 "Gmsh.y" +#line 4863 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(3) - (4)].c))) @@ -10298,7 +10299,7 @@ yyreduce: break; case 437: -#line 4881 "Gmsh.y" +#line 4875 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -10319,7 +10320,7 @@ yyreduce: break; case 438: -#line 4900 "Gmsh.y" +#line 4894 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -10340,7 +10341,7 @@ yyreduce: break; case 439: -#line 4921 "Gmsh.y" +#line 4915 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); @@ -10348,21 +10349,21 @@ yyreduce: break; case 440: -#line 4926 "Gmsh.y" +#line 4920 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 441: -#line 4930 "Gmsh.y" +#line 4924 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); ;} break; case 442: -#line 4934 "Gmsh.y" +#line 4928 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -10374,21 +10375,21 @@ yyreduce: break; case 443: -#line 4946 "Gmsh.y" +#line 4940 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d)); ;} break; case 444: -#line 4950 "Gmsh.y" +#line 4944 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255); ;} break; case 445: -#line 4962 "Gmsh.y" +#line 4956 "Gmsh.y" { int flag; (yyval.u) = GetColorForString(-1, (yyvsp[(1) - (1)].c), &flag); @@ -10398,7 +10399,7 @@ yyreduce: break; case 446: -#line 4969 "Gmsh.y" +#line 4963 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -10408,14 +10409,14 @@ yyreduce: break; case 447: -#line 4979 "Gmsh.y" +#line 4973 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; case 448: -#line 4983 "Gmsh.y" +#line 4977 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -10430,7 +10431,7 @@ yyreduce: break; case 449: -#line 4998 "Gmsh.y" +#line 4992 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); @@ -10438,21 +10439,21 @@ yyreduce: break; case 450: -#line 5003 "Gmsh.y" +#line 4997 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); ;} break; case 451: -#line 5010 "Gmsh.y" +#line 5004 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 452: -#line 5014 "Gmsh.y" +#line 5008 "Gmsh.y" { if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown string variable '%s'", (yyvsp[(1) - (1)].c)); @@ -10468,7 +10469,7 @@ yyreduce: break; case 453: -#line 5027 "Gmsh.y" +#line 5021 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), out); @@ -10479,7 +10480,7 @@ yyreduce: break; case 454: -#line 5035 "Gmsh.y" +#line 5029 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -10490,14 +10491,14 @@ yyreduce: break; case 455: -#line 5046 "Gmsh.y" +#line 5040 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; case 456: -#line 5050 "Gmsh.y" +#line 5044 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -10508,7 +10509,7 @@ yyreduce: break; case 457: -#line 5058 "Gmsh.y" +#line 5052 "Gmsh.y" { const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c)); if(!env) env = ""; @@ -10519,7 +10520,7 @@ yyreduce: break; case 458: -#line 5066 "Gmsh.y" +#line 5060 "Gmsh.y" { std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); @@ -10530,7 +10531,7 @@ yyreduce: break; case 459: -#line 5074 "Gmsh.y" +#line 5068 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (6)].c)) + strlen((yyvsp[(5) - (6)].c)) + 1) * sizeof(char)); strcpy((yyval.c), (yyvsp[(3) - (6)].c)); @@ -10541,7 +10542,18 @@ yyreduce: break; case 460: -#line 5082 "Gmsh.y" +#line 5077 "Gmsh.y" + { + (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (6)].c)) + strlen((yyvsp[(5) - (6)].c)) + 1) * sizeof(char)); + strcpy((yyval.c), (yyvsp[(3) - (6)].c)); + strcat((yyval.c), (yyvsp[(5) - (6)].c)); + Free((yyvsp[(3) - (6)].c)); + Free((yyvsp[(5) - (6)].c)); + ;} + break; + + case 461: +#line 5085 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -10557,8 +10569,8 @@ yyreduce: ;} break; - case 461: -#line 5096 "Gmsh.y" + case 462: +#line 5099 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -10574,8 +10586,8 @@ yyreduce: ;} break; - case 462: -#line 5110 "Gmsh.y" + case 463: +#line 5113 "Gmsh.y" { std::string input = (yyvsp[(3) - (8)].c); std::string substr_old = (yyvsp[(5) - (8)].c); @@ -10589,8 +10601,8 @@ yyreduce: ;} break; - case 463: -#line 5122 "Gmsh.y" + case 464: +#line 5125 "Gmsh.y" { int size = 0; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -10608,8 +10620,8 @@ yyreduce: ;} break; - case 464: -#line 5139 "Gmsh.y" + case 465: +#line 5142 "Gmsh.y" { int size = 0; for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++) @@ -10627,22 +10639,22 @@ yyreduce: ;} break; - case 465: -#line 5155 "Gmsh.y" + case 466: +#line 5158 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; - case 466: -#line 5160 "Gmsh.y" + case 467: +#line 5163 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; - case 467: -#line 5164 "Gmsh.y" + case 468: +#line 5167 "Gmsh.y" { char tmpstring[5000]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -10663,8 +10675,8 @@ yyreduce: ;} break; - case 468: -#line 5184 "Gmsh.y" + case 469: +#line 5187 "Gmsh.y" { char tmpstring[5000]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -10685,21 +10697,21 @@ yyreduce: ;} break; - case 469: -#line 5206 "Gmsh.y" + case 470: +#line 5209 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(char*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].c))); ;} break; - case 470: -#line 5211 "Gmsh.y" + case 471: +#line 5214 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].c))); ;} break; - case 471: -#line 5217 "Gmsh.y" + case 472: +#line 5220 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -10709,8 +10721,8 @@ yyreduce: ;} break; - case 472: -#line 5226 "Gmsh.y" + case 473: +#line 5229 "Gmsh.y" { char tmpstr[256]; sprintf(tmpstr, "_%d", (int)(yyvsp[(4) - (5)].d)); @@ -10720,19 +10732,19 @@ yyreduce: ;} break; - case 473: -#line 5239 "Gmsh.y" + case 474: +#line 5242 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; - case 474: -#line 5242 "Gmsh.y" + case 475: +#line 5245 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; /* Line 1267 of yacc.c. */ -#line 10736 "Gmsh.tab.cpp" +#line 10748 "Gmsh.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -10946,7 +10958,7 @@ yyreturn: } -#line 5246 "Gmsh.y" +#line 5249 "Gmsh.y" int PrintListOfDouble(char *format, List_T *list, char *buffer) diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 192877c7ff..7a125d8158 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1206,9 +1206,7 @@ DefineConstants : { std::string key($3); std::vector<double> val(1, 0.); - floatOptions.clear(); charOptions.clear(); if(!gmsh_yysymbols.count(key)){ - Msg::ExchangeOnelabParameter(key, val, floatOptions, charOptions); gmsh_yysymbols[key].value = val; } Free($3); @@ -1217,9 +1215,7 @@ DefineConstants : { std::string key($3); std::vector<double> val(1, $5); - floatOptions.clear(); charOptions.clear(); if(!gmsh_yysymbols.count(key)){ - Msg::ExchangeOnelabParameter(key, val, floatOptions, charOptions); gmsh_yysymbols[key].value = val; } Free($3); @@ -1239,9 +1235,7 @@ DefineConstants : | DefineConstants Comma String__Index tAFFECT StringExpr { std::string key($3), val($5); - floatOptions.clear(); charOptions.clear(); if(!gmsh_yystringsymbols.count(key)){ - Msg::ExchangeOnelabParameter(key, val, floatOptions, charOptions); gmsh_yystringsymbols[key] = val; } Free($3); @@ -5078,6 +5072,15 @@ StringExpr : Free($3); Free($5); } + // for compatibility with GetDP + | tStrCat '[' StringExprVar ',' StringExprVar ']' + { + $$ = (char *)Malloc((strlen($3) + strlen($5) + 1) * sizeof(char)); + strcpy($$, $3); + strcat($$, $5); + Free($3); + Free($5); + } | tStrPrefix '(' StringExprVar ')' { $$ = (char *)Malloc((strlen($3) + 1) * sizeof(char)); diff --git a/contrib/mobile/iOS/Onelab/files/magnet/Magnetostatics.pro b/contrib/mobile/iOS/Onelab/files/magnet/Magnetostatics.pro index 4c9c07d5c5..c09e3a5892 100644 --- a/contrib/mobile/iOS/Onelab/files/magnet/Magnetostatics.pro +++ b/contrib/mobile/iOS/Onelab/files/magnet/Magnetostatics.pro @@ -1,20 +1,22 @@ Group { // Input groups: - DefineGroup[ Domain_M = {{}, Label "Permanent magnets", - Path "Regions/0Sources"}, - Domain_S = {{}, Label "Inductor (imposed j_s)", - Path "Regions/0Sources"}, - Domain_Inf = {{}, Label "Infinite domain (spherical shell)", - Path "Regions/0Special regions", Closed "1"}, - Domain_Mag = {{}, Label "Passive magnetic regions", - Path "Regions/Other regions"}, - Dirichlet_phi_0 = {{}, Label "h_t = 0", Closed "1", - Path "Regions/0Boundary conditions"}, - Dirichlet_a_0 = {{}, Label "b_n = 0", - Path "Regions/0Boundary conditions"} ]; + DefineGroup[ + Domain_M = {{}, + Name "Regions/0Sources/Permanent magnets"}, + Domain_S = {{}, + Name "Regions/0Sources/Inductor (imposed j_s)"}, + Domain_Inf = {{}, + Name "Regions/0Special regions/Infinite domain (spherical shell)", + Closed "1"}, + Domain_Mag = {{}, + Name "Regions/Other regions/Passive magnetic regions"}, + Dirichlet_phi_0 = {{}, + Name "Regions/0Boundary conditions/h_t = 0", Closed "1"}, + Dirichlet_a_0 = {{}, + Name "Regions/0Boundary conditions/b_n = 0"} ]; DefineGroup[ Domain = {{Domain_Mag, Domain_M, Domain_S, Domain_Inf}, - Label "Computational domain", Path "Regions", Visible 0} ]; + Name "Regions/Computational domain", Visible 0} ]; } Function{ @@ -116,6 +118,7 @@ PostProcessing { { Name b ; Value { Local { [ - mu[] * {d phi} ] ; In Domain ; Jacobian JVol ; } Local { [ - mu[] * hc[] ] ; In Domain_M ; Jacobian JVol ; } } } { Name h ; Value { Local { [ - {d phi} ] ; In Domain ; Jacobian JVol ; } } } + { Name hc ; Value { Local { [ hc[] ] ; In Domain_M ; Jacobian JVol ; } } } { Name phi ; Value { Local { [ {phi} ] ; In Domain ; Jacobian JVol ; } } } } } @@ -126,6 +129,7 @@ PostOperation { Operation { Print[ b, OnElementsOf Domain, File "MagSta_phi_b.pos" ] ; Print[ h, OnElementsOf Domain, File "MagSta_phi_h.pos" ] ; + Print[ hc, OnElementsOf Domain, File "MagSta_a_hc.pos" ] ; Print[ phi, OnElementsOf Domain, File "MagSta_phi_phi.pos" ] ; } } @@ -189,11 +193,12 @@ Resolution { PostProcessing { { Name MagSta_a ; NameOfFormulation MagSta_a ; Quantity { - { Name a ; Value { Local { [ CompZ[{a}] ] ; In Domain ; Jacobian JVol ; } } } + { Name az ; Value { Local { [ CompZ[{a}] ] ; In Domain ; Jacobian JVol ; } } } { Name b ; Value { Local { [ {d a} ] ; In Domain ; Jacobian JVol ; } } } { Name a ; Value { Local { [ {a} ] ; In Domain ; Jacobian JVol ; } } } { Name h ; Value { Local { [ nu[] * {d a} ] ; In Domain ; Jacobian JVol ; } Local { [ hc[] ] ; In Domain_M ; Jacobian JVol ; } } } + { Name hc ; Value { Local { [ hc[] ] ; In Domain_M ; Jacobian JVol ; } } } } } } @@ -203,6 +208,7 @@ PostOperation { Operation { Print[ b, OnElementsOf Domain, File "MagSta_a_b.pos" ] ; Print[ h, OnElementsOf Domain, File "MagSta_a_h.pos" ] ; + Print[ hc, OnElementsOf Domain, File "MagSta_a_hc.pos" ] ; Print[ a, OnElementsOf Domain, File "MagSta_a_a.pos" ] ; } } diff --git a/contrib/mobile/iOS/Onelab/files/magnet/magnet.geo b/contrib/mobile/iOS/Onelab/files/magnet/magnet.geo index b31f28f33d..6893439a8c 100644 --- a/contrib/mobile/iOS/Onelab/files/magnet/magnet.geo +++ b/contrib/mobile/iOS/Onelab/files/magnet/magnet.geo @@ -1,24 +1,19 @@ Include "magnet_data.pro"; DefineConstant[ h = {0.14, Min 0.1, Max 0.2, Step 0.01, - Path "Parameters/Geometry", - Label "Core height (m)"} ] ; + Name "Parameters/Geometry/Core height (m)"} ] ; DefineConstant[ l = {0.14, Min 0.05, Max 0.2, Step 0.01, - Path "Parameters/Geometry", - Label "Core width (m)"} ] ; + Name "Parameters/Geometry/Core width (m)"} ] ; DefineConstant[ d = {0.03, Min 0.01, Max 0.05, Step 0.002, - Path "Parameters/Geometry", - Label "Core thickness (m)"} ] ; + Name "Parameters/Geometry/Core thickness (m)"} ] ; DefineConstant[ e = {5e-3, Min 5e-4, Max d, Step 1e-3, - Path "Parameters/Geometry", - Label "Air gap (m)", Highlight "LightYellow"} ] ; + Name "Parameters/Geometry/Air gap (m)", Highlight "LightYellow"} ] ; DefineConstant[ ha = {0.03, Min 0.01, Max 0.1, Step 0.01, - Path "Parameters/Geometry", - Label "Magnet height (m)"} ] ; + Name "Parameters/Geometry/Magnet height (m)"} ] ; lc0 = d / 5 ; lc1 = e / 2 ; diff --git a/contrib/mobile/iOS/Onelab/files/magnet/magnet.pro b/contrib/mobile/iOS/Onelab/files/magnet/magnet.pro index 7f695706ea..1645e94d52 100644 --- a/contrib/mobile/iOS/Onelab/files/magnet/magnet.pro +++ b/contrib/mobile/iOS/Onelab/files/magnet/magnet.pro @@ -30,8 +30,7 @@ Function { // DefineConstant is used to define a default value for murCore; this value // can be changed interactively by the ONELAB server DefineConstant[ murCore = {200., Min 1, Max 1000, Step 10, - Label "Core relative permeability", - Path "Parameters/Materials"} ]; + Name "Parameters/Materials/Core relative permeability"} ]; nu [ Region[{Air, AirInf, AirGap, Magnet}] ] = 1. / mu0 ; nu [ Core ] = 1. / (murCore * mu0) ; @@ -39,9 +38,9 @@ Function { mu [ Region[{Air, AirInf, AirGap, Magnet}] ] = mu0 ; mu [ Core ] = murCore * mu0; - DefineConstant[ Hc = {920000, Label "Magnet coercive field (A/m)", - Path "Parameters/Materials"} ]; - hc [ Magnet ] = Vector[0., Hc, 0.] ; + DefineConstant[ Hc = {920000, + Name "Parameters/Materials/hc", Label "Magnet coercive field (A/m)"} ]; + hc [ Magnet ] = Rotate[ Vector[Hc, 0, 0.], 0, 0, Pi/2] ; } Include "Magnetostatics.pro" @@ -52,9 +51,9 @@ PostOperation { { Name phi ; NameOfPostProcessing MagSta_phi; Operation { Print[ phi, OnElementsOf Domain, File "phi.pos" ] ; + Print[ hc, OnElementsOf Domain, File "hc.pos" ] ; Print[ b, OnElementsOf Domain, File "b_phi.pos" ] ; Print[ b, OnLine {{-0.07,eps,0}{0.09,eps,0}} {500}, File "b_phi.txt", Format Table ] ; - Printf [ "murCore: %f", murCore ] ; } } { Name a ; NameOfPostProcessing MagSta_a; @@ -63,7 +62,6 @@ PostOperation { Print[ b, OnElementsOf Domain, File "b_a.pos" ] ; Print[ h, OnElementsOf Domain, File "h_a.pos" ] ; Print[ b, OnLine {{-0.07,eps,0}{0.09,eps,0}} {500}, File "b_a.txt" , Format Table ] ; - Printf [ "murCore: %f", murCore ] ; } } } diff --git a/contrib/mobile/iOS/Onelab/files/magnet/magnet_data.pro b/contrib/mobile/iOS/Onelab/files/magnet/magnet_data.pro index 3e0a76ce52..23f28a1919 100644 --- a/contrib/mobile/iOS/Onelab/files/magnet/magnet_data.pro +++ b/contrib/mobile/iOS/Onelab/files/magnet/magnet_data.pro @@ -1,11 +1,9 @@ DefineConstant[ Val_Rint = {0.15, Min 0.2, Max 1, Step 0.1, - Path "Parameters/Geometry/1", - Label "Internal shell radius (m)"} ]; + Name "Parameters/Geometry/1Internal shell radius (m)"} ]; DefineConstant[ Val_Rext = {0.25, Min Val_Rint, Max 0.5, Step 0.1, - Path "Parameters/Geometry/2", - Label "External shell radius (m)"}]; + Name "Parameters/Geometry/2External shell radius (m)"}]; AIR = 100; AIR_INF = 101; diff --git a/contrib/mobile/iOS/Onelab/files/pmsm/BH.pro b/contrib/mobile/iOS/Onelab/files/pmsm/BH.pro index 1458d87c83..e3783b11e9 100644 --- a/contrib/mobile/iOS/Onelab/files/pmsm/BH.pro +++ b/contrib/mobile/iOS/Onelab/files/pmsm/BH.pro @@ -5,7 +5,7 @@ Function{ dnudb2_1a[] = 18. * Exp[1.8*SquNorm[$1]] ; h_1a[] = nu_1a[$1]*$1 ; dhdb_1a[] = TensorDiag[1,1,1] * nu_1a[$1#1] + 2*dnudb2_1a[#1] * SquDyadicProduct[#1] ; - dhdb_1a_NL[] = 2*dnudb2_1a[$1] * SquDyadicProduct[$1] ; + dhdb_1a_NL[] = 2*dnudb2_1a[$1#1] * SquDyadicProduct[#1] ; // interpolated Mat1_h = { @@ -26,30 +26,58 @@ Function{ 1.7500e+00, 1.8000e+00, 1.8500e+00, 1.9000e+00, 1.9500e+00, 2.0000e+00, 2.0500e+00, 2.1000e+00, 2.1500e+00, 2.2000e+00, 2.2500e+00, 2.3000e+00, 2.3500e+00, 2.4000e+00 } ; - Mat1_b2 = { - 0.0000e+00, 2.5000e-03, 1.0000e-02, 2.2500e-02, 4.0000e-02, 6.2500e-02, 9.0000e-02, - 1.2250e-01, 1.6000e-01, 2.0250e-01, 2.5000e-01, 3.0250e-01, 3.6000e-01, 4.2250e-01, - 4.9000e-01, 5.6250e-01, 6.4000e-01, 7.2250e-01, 8.1000e-01, 9.0250e-01, 1.0000e+00, - 1.1025e+00, 1.2100e+00, 1.3225e+00, 1.4400e+00, 1.5625e+00, 1.6900e+00, 1.8225e+00, - 1.9600e+00, 2.1025e+00, 2.2500e+00, 2.4025e+00, 2.5600e+00, 2.7225e+00, 2.8900e+00, - 3.0625e+00, 3.2400e+00, 3.4225e+00, 3.6100e+00, 3.8025e+00, 4.0000e+00, 4.2025e+00, - 4.4100e+00, 4.6225e+00, 4.8400e+00, 5.0625e+00, 5.2900e+00, 5.5225e+00, 5.7600e+00 + + Mat1_b2 = List[Mat1_b]^2; + Mat1_nu = List[Mat1_h]/List[Mat1_b]; + Mat1_nu(0) = Mat1_nu(1); + + Mat1_nu_b2 = ListAlt[Mat1_b2, Mat1_nu] ; + nu_1[] = InterpolationLinear[ SquNorm[$1] ]{List[Mat1_nu_b2]} ; + dnudb2_1[] = dInterpolationLinear[SquNorm[$1]]{List[Mat1_nu_b2]} ; + h_1[] = nu_1[$1] * $1 ; + dhdb_1[] = TensorDiag[1,1,1] * nu_1[$1#1] + 2*dnudb2_1[#1] * SquDyadicProduct[#1] ; + dhdb_1_NL[] = 2*dnudb2_1[$1#1] * SquDyadicProduct[#1] ; + + + // nu = 123. + 0.0596 * exp ( 3.504 * b * b ) + // analytical 3kW machine + nu_3kWa[] = 123. + 0.0596 * Exp[3.504*SquNorm[$1]] ; + dnudb2_3kWa[] = 0.0596*3.504 * Exp[3.504*SquNorm[$1]] ; + h_3kWa[] = nu_3kWa[$1]*$1 ; + dhdb_3kWa[] = TensorDiag[1,1,1] * nu_3kWa[$1#1] + 2*dnudb2_3kWa[#1] * SquDyadicProduct[$1] ; + dhdb_3kWa_NL[] = 2*dnudb2_3kWa[$1#1] * SquDyadicProduct[#1] ; + + // interpolated + Mat3kW_h = { + 0.0000e+00, 6.1465e+00, 1.2293e+01, 1.8440e+01, 2.4588e+01, 3.0736e+01, 3.6886e+01, + 4.3037e+01, 4.9190e+01, 5.5346e+01, 6.1507e+01, 6.7673e+01, 7.3848e+01, 8.0036e+01, + 8.6241e+01, 9.2473e+01, 9.8745e+01, 1.0508e+02, 1.1150e+02, 1.1806e+02, 1.2485e+02, + 1.3199e+02, 1.3971e+02, 1.4836e+02, 1.5856e+02, 1.7137e+02, 1.8864e+02, 2.1363e+02, + 2.5219e+02, 3.1498e+02, 4.2161e+02, 6.0888e+02, 9.4665e+02, 1.5697e+03, 2.7417e+03, + 4.9870e+03, 9.3633e+03, 1.8037e+04, 3.5518e+04, 7.1329e+04, 1.4591e+05, 3.0380e+05, + 6.4363e+05, 1.3872e+06, 3.0413e+06, 6.7826e+06, 1.5386e+07, 3.5504e+07, 8.3338e+07 } ; - Mat1_nu = { - 1.1005e+02, 1.1005e+02, 1.1018e+02, 1.1041e+02, 1.1075e+02, 1.1119e+02, 1.1176e+02, - 1.1247e+02, 1.1334e+02, 1.1440e+02, 1.1568e+02, 1.1724e+02, 1.1912e+02, 1.2139e+02, - 1.2416e+02, 1.2752e+02, 1.3165e+02, 1.3671e+02, 1.4297e+02, 1.5076e+02, 1.6050e+02, - 1.7275e+02, 1.8829e+02, 2.0810e+02, 2.3356e+02, 2.6651e+02, 3.0947e+02, 3.6589e+02, - 4.4056e+02, 5.4014e+02, 6.7397e+02, 8.5528e+02, 1.1028e+03, 1.4436e+03, 1.9164e+03, - 2.5777e+03, 3.5104e+03, 4.8366e+03, 6.7381e+03, 9.4870e+03, 1.3494e+04, 1.9385e+04, - 2.8118e+04, 4.1172e+04, 6.0854e+04, 9.0779e+04, 1.3667e+05, 2.0764e+05, 3.1835e+05 + Mat3kW_b = { + 0.0000e+00, 5.0000e-02, 1.0000e-01, 1.5000e-01, 2.0000e-01, 2.5000e-01, 3.0000e-01, + 3.5000e-01, 4.0000e-01, 4.5000e-01, 5.0000e-01, 5.5000e-01, 6.0000e-01, 6.5000e-01, + 7.0000e-01, 7.5000e-01, 8.0000e-01, 8.5000e-01, 9.0000e-01, 9.5000e-01, 1.0000e+00, + 1.0500e+00, 1.1000e+00, 1.1500e+00, 1.2000e+00, 1.2500e+00, 1.3000e+00, 1.3500e+00, + 1.4000e+00, 1.4500e+00, 1.5000e+00, 1.5500e+00, 1.6000e+00, 1.6500e+00, 1.7000e+00, + 1.7500e+00, 1.8000e+00, 1.8500e+00, 1.9000e+00, 1.9500e+00, 2.0000e+00, 2.0500e+00, + 2.1000e+00, 2.1500e+00, 2.2000e+00, 2.2500e+00, 2.3000e+00, 2.3500e+00, 2.4000e+00 } ; - Mat1_nu_b2 = ListAlt[Mat1_b2, Mat1_nu] ; - nu_1[] = InterpolationLinear[$1]{List[Mat1_nu_b2]} ; - dnudb2_1[] = dInterpolationLinear[$1]{List[Mat1_nu_b2]} ; - h_1[] = nu_1[(SquNorm[$1])] * $1 ; - dhdb_1[] = TensorDiag[1,1,1] * nu_1[SquNorm[$1]#1] + 2*dnudb2_1[#1] * SquDyadicProduct[$1] ; + Mat3kW_b2 = List[Mat3kW_b]^2; + Mat3kW_nu = List[Mat3kW_h]/List[Mat3kW_b]; + Mat3kW_nu(0) = Mat3kW_nu(1); + + Mat3kW_nu_b2 = ListAlt[Mat3kW_b2, Mat3kW_nu] ; + nu_3kW[] = InterpolationLinear[SquNorm[$1]]{List[Mat3kW_nu_b2]} ; + dnudb2_3kW[] = dInterpolationLinear[SquNorm[$1]]{List[Mat3kW_nu_b2]} ; + h_3kW[] = nu_3kW[$1] * $1 ; + dhdb_3kW[] = TensorDiag[1,1,1]*nu_3kW[$1#1] + 2*dnudb2_3kW[#1] * SquDyadicProduct[#1] ; + dhdb_3kW_NL[] = 2*dnudb2_3kW[$1] * SquDyadicProduct[$1] ; + } diff --git a/contrib/mobile/iOS/Onelab/files/pmsm/machine_magstadyn_a.pro b/contrib/mobile/iOS/Onelab/files/pmsm/machine_magstadyn_a.pro index b87fc495ad..03b4e016f2 100644 --- a/contrib/mobile/iOS/Onelab/files/pmsm/machine_magstadyn_a.pro +++ b/contrib/mobile/iOS/Onelab/files/pmsm/machine_magstadyn_a.pro @@ -1,99 +1,228 @@ -Group { - DefineGroup[ DomainM, DomainB, DomainS ]; - DefineGroup[ DomainL, DomainNL, Dummy ]; - DefineGroup[ Rotor_Inds, Rotor_IndsP, Rotor_IndsN, Rotor_Magnets, Rotor_Bars ]; - DefineGroup[ Surf_bn0, Rotor_Bnd_MBaux] ; - DefineGroup[ Resistance_Cir, Inductance_Cir, Capacitance_Cir, DomainZt_Cir, DomainSource_Cir ]; -} - -Function{ - - DefineConstant[ Flag_Cir, Flag_NL, Flag_ParkTransformation ]; - DefineConstant[ Term_vxb ]; - DefineConstant[ AxialLength = {1, Visible 0}, - FillFactor_Winding = {1, Visible 0}, - Factor_R_3DEffects = {1, Visible 0}, - SymmetryFactor = {1, Visible 0} ]; - - Flag_Symmetry = (SymmetryFactor==1) ? 0 : 1 ; - - DefineConstant[ Nb_max_iter = {20, Visible 0}, - relaxation_factor = {1, Visible 0}, - stop_criterion = {1e-5, Visible 0}, - reltol = {1e-7, Visible 0}, - abstol = {1e-5, Visible 0} ]; +/* + This template file contains a generic getdp/onelab template for 2D models of + rotating electrical machines. Fields are computed with a vector potential + formulation. Motion is solved with the moving band technique. + + The template begins with a section devoted to the declaration of all potential + interface variables, i.e. template variables that can be accessed/redefined + from outside the template. Interface variables are either + - groups (declared with DefineGroup[...]) + - functions (declared with DefineFunction[...]) + - constants (declared with DefineConstant[...]) + + This declaration mechanism + - allows the user to define the quantities of interest only, the others being + assigned a default value (zero or "empty" if no value given in the declaration + sentence) + - avoids irrelevant error messages being produced when referencing to the + unused variables in the template + + Redeclarations are ignored. +*/ - DefineConstant[ II, VV, pA, pB, pC, Ie, ID, IQ, I0 ]; - DefineFunction[ br, js, Resistance, Inductance, Capacitance ]; - DefineFunction[ Theta_Park, Theta_Park_deg, RotorPosition, RotorPosition_deg ] ; +//------------------------------------------------------------------------------------- +// Groups: +// The groups declared in this section can be defined by the user according to +// the characteristics of the modelled machine in a "model.pro" file including +// this template file. +Group { + DefineGroup[ + Stator_Inds, StatorC, StatorCC, Stator_Air, Stator_Airgap, Stator_Magnets, + Rotor_Inds, RotorC, RotorCC, Rotor_Air, Rotor_Airgap, Rotor_Magnets, Rotor_Bars, + Stator_IndsP, Stator_IndsN, Rotor_IndsP, Rotor_IndsN, + Stator_Al, Rotor_Al, Stator_Cu, Rotor_Cu, Stator_Fe, Rotor_Fe, + Stator_Bnd_MB, Rotor_Bnd_MBaux, Rotor_Bnd_MB, + Surf_bn0, Surf_Inf, Point_ref, + PhaseA, PhaseB, PhaseC, PhaseA_pos, PhaseB_pos, PhaseC_pos, + Resistance_Cir, Inductance_Cir, Capacitance_Cir, DomainZt_Cir, DomainSource_Cir + ]; + // Exception: the group 'MovingBand_PhysicalNb' needs contain exactly one region + // to pass a test done by the parser. It is declared with a dummy region "0". + MovingBand_PhysicalNb = #0 ; +} - DefineConstant[ Flag_SrcType_Rotor = {0, Visible 0} ]; +//------------------------------------------------------------------------------------- +// Constants: +// Interface constants are declared in this section. Constants declared with +// a DefineConstant[...] AND with a `Name' attribute are automatically added to +// the ONELAB parameter database. Any previous declaration in another file of a +// ONELAB paramater with the same name will link to the corresponding template +// parameter. + +DefineConstant[ + // Analysis type + Flag_AnalysisType = 0, + // Symmetry + AxialLength = 1, + SymmetryFactor = 1, + Flag_Symmetry = (SymmetryFactor==1) ? 0 : 1, + Term_vxb = 0, + // Time and frequency + Freq = 534, + Period = 1/Freq, + time0 = 0, + NbrPeriod = 1, + timemax = NbrPeriod * Period, + NbSteps = 1, + delta_time = Period / NbSteps, + // Material characteristics + mur_fe = 1.0e3, + sigma_al = 3.72e7, // conductivity of aluminum [S/m] + sigma_cu = 5.9e7 // conductivity of copper [S/m] + sigma_fe = 1.0e7, // conductivity of iron [S/m] + // Nonlinear iterations + Flag_NL = 0, + Flag_NL_law_Type = 0, + Nb_max_iter = {30, Name "Nonlinear solver/Max. num. iterations", Visible 0}, + relaxation_factor = {1, Name "Nonlinear solver/Relaxation factor", Visible 0}, + stop_criterion = {1e-5, Name "Nonlinear solver/Stopping criterion", Visible 0}, + // Coil system + NbrPhases = 3, + FillFactor_Winding = 1, + Factor_R_3DEffects = 1, + // Electrical circuit + Flag_Cir = 0, + Flag_ParkTransformation = 0, + Flag_ConstantSource = 0, + Flag_SrcType_Stator = 0, + Flag_SrcType_Rotor = 0, Flag_Cir_RotorCage = 0, + II = 0, VV = 0, wr = 0, + Ia = II, + Ib = II, + Ic = II, + Va = VV, + Vb = VV, + Vc = VV, + pA = 0, pB = 0, pC = 0, Ie = 0, ID = 0, IQ = 0, I0 = 0, + variableFrequencyLoop = wr, + initialFrequencyLoop = 0, + Flag_SrcType_StatorA = Flag_SrcType_Stator, + Flag_SrcType_StatorB = Flag_SrcType_Stator, + Flag_SrcType_StatorC = Flag_SrcType_Stator, + // Mechanical equation + Inertia = 0, + Flag_ImposedSpeed = 1, + // Simulation parameters + Flag_SaveAllSteps = {0, Name "Input/00Save all time steps", Choices {0,1}}, + Clean_Results = {1, Name "Input/01Remove previous result files", Choices {0,1}}, + ResDir = "res/", + ExtGmsh = ".pos", + ExtGnuplot = ".dat" + R_ = {"Analysis", Name "GetDP/1ResolutionChoices", Visible 0}, + C_ = {"-solve -v 3 -v2", Name "GetDP/9ComputeCommand", Visible 0}, + P_ = {"", Name "GetDP/2PostOperationChoices", Visible 0} +]; - DefineConstant[ Clean_Results = { 1, Choices {0,1}, - Label "Remove previous result files", - Path "Input/1", Visible 1 } ] ; +//------------------------------------------------------------------------------------- +// Function declaration: +// Functions that can be defined explicitly outside the template in a calling .pro file +// are declared here so that their identifiers exist and can be referred to +// (but cannot be used) in other objects. - DefineConstant[ Flag_SaveAllSteps = {0, Label "Save all time steps", - Path "Input/0", Choices {0,1}} ]; +Function{ + DefineFunction[ + br, js, + Resistance, Inductance, Capacitance, NbWires, SurfCoil, + Theta_Park, Theta_Park_deg, + RotorPosition, RotorPosition_deg, Friction, Torque_mec + ]; +} - DefineConstant[ my_output={"Output/40T_rotor", Visible 0}]; +// End of declarations +//------------------------------------------------------------------------------------- -} -Include "BH.pro"; // nonlinear BH caracteristic of magnetic material +//------------------------------------------------------------------------------------- +// Defninition of "template groups" +// Template groups represent the regions in terms of which the assembly or not +// of FE terms and the postprocessing calculations are controlled. Template +// groups are defined in this section in terms of the above declared "user +// defined groups". Group { + // DomainC : with massive conductors + // DomainCC : non-conducting domain + // DomainM : with permanent magnets + // DomainB : with inductors + // DomainS : with imposed current density + // DomainL : with linear permeability (no jacobian matrix) + // DomainNL : with nonlinear permeability (jacobian matrix) + // DomainV : with additional vxb term + // DomainKin : region number for mechanical equation + // Dummy : region number for postpro with functions Inds = Region[ {Stator_Inds, Rotor_Inds} ] ; DomainB = Region[ {Inds} ] ; - DomainM = Region[ {Rotor_Magnets} ] ; + DomainM = Region[ {Stator_Magnets, Rotor_Magnets} ] ; + DomainS = Region[{}]; + Dummy = Region[{}]; Stator = Region[{ StatorC, StatorCC }] ; Rotor = Region[{ RotorC, RotorCC }] ; - Rotor_Moving = Region[{ Rotor, Rotor_Air, Rotor_Airgap, Rotor_Inds, Rotor_Bnd_MBaux} ] ; // Use in ChangeOfCoordinates + Rotor_Moving = Region[{ Rotor, Rotor_Air, Rotor_Airgap, Rotor_Inds, Rotor_Bnd_MBaux} ] ; + // used in ChangeOfCoordinates MB = MovingBand2D[ MovingBand_PhysicalNb, Stator_Bnd_MB, Rotor_Bnd_MB, SymmetryFactor] ; Air = Region[{ Rotor_Air, Rotor_Airgap, Stator_Air, Stator_Airgap, MB } ] ; - Inds = Region[{ Rotor_Inds, Stator_Inds } ] ; - - DomainV = Region[{}]; // Speed considered either with term v/\b - If(Term_vxb) // or not dynamics in time domain + mechanics - DomainV = Region[{ RotorC }]; - EndIf DomainCC = Region[{ Air, Inds, StatorCC, RotorCC }]; DomainC = Region[{ StatorC, RotorC }]; Domain = Region[{ DomainCC, DomainC }] ; + DomainNL = Region[{}]; If(Flag_NL) DomainNL = Region[ {Stator_Fe, Rotor_Fe } ]; DomainL = Region[ {Domain,-DomainNL} ]; EndIf + DomainV = Region[{}]; + If(Term_vxb) // or not dynamics in time domain + mechanics + DomainV = Region[{ RotorC }]; + EndIf + DomainKin = #1234 ; // Dummy region number for mechanical equation - DomainDummy = #12345 ; // Dummy region number for mechanical equation + DomainDummy = #12345 ; // Dummy region number for postpro with functions } -Function { - mu0 = 4.e-7 * Pi ; - sigma_al = 3.72e7 ; // conductivity of aluminum [S/m] - sigma_cu = 5.9e7 ; // conductivity of copper [S/m] - nu [#{Air, Inds, Stator_Al, Rotor_Al, Stator_Cu, Rotor_Cu, Rotor_Magnets, Rotor_Bars}] = 1. / mu0 ; +//------------------------------------------------------------------------------------- +// Defninition of functions and variables only used internally + +Include "BH.pro"; // nonlinear BH caracteristic of magnetic material + +Function { + mu0 = 4.e-7 * Pi ; + nu0 = 1. / mu0 ; + nu [#{Air, Inds, Stator_Al, Rotor_Al, Stator_Cu, Rotor_Cu, Rotor_Magnets, Rotor_Bars}]=nu0; If(!Flag_NL) nu [#{Stator_Fe, Rotor_Fe }] = 1 / (mur_fe * mu0) ; + dhdb_NL [] = 0; EndIf If(Flag_NL) - nu [#{Stator_Fe, Rotor_Fe }] = nu_1a[$1] ; + If(Flag_NL_law_Type==0) + nu [#{Stator_Fe, Rotor_Fe }] = nu_1a[$1] ; + dhdb_NL [ DomainNL ] = dhdb_1a_NL[$1]; + EndIf + If(Flag_NL_law_Type==1) + nu [#{Stator_Fe, Rotor_Fe }] = nu_1[$1] ; + dhdb_NL [ DomainNL ] = dhdb_1_NL[$1]; + EndIf + If(Flag_NL_law_Type==2) + nu [#{Stator_Fe, Rotor_Fe }] = nu_3kWa[$1] ; + dhdb_NL [ DomainNL ] = dhdb_3kWa_NL[$1]; + EndIf + If(Flag_NL_law_Type==3) + nu [#{Stator_Fe, Rotor_Fe }] = nu_3kW[$1] ; + dhdb_NL [ DomainNL ] = dhdb_3kW_NL[$1]; + EndIf EndIf - dhdb_NL [ DomainNL ] = dhdb_1a_NL[$1]; - sigma[#{Rotor_Fe}] = sigma_fe ; + sigma[#{Rotor_Fe, Stator_Fe}] = sigma_fe ; sigma[#{Rotor_Al, Stator_Al}] = sigma_al ; sigma[#{Rotor_Cu, Stator_Cu}] = sigma_cu ; sigma[#{Inds}] = sigma_cu ; @@ -103,12 +232,9 @@ Function { Rb[] = Factor_R_3DEffects*AxialLength*FillFactor_Winding*NbWires[]^2/SurfCoil[]/sigma[] ; Resistance[#{Stator_Inds, Rotor_Inds}] = Rb[] ; - T = 1/Freq ; // Fundamental period in s - Idir[#{Stator_IndsP, Rotor_IndsP}] = 1 ; Idir[#{Stator_IndsN, Rotor_IndsN}] = -1 ; - // Functions for Park transformation Idq0[] = Vector[ ID, IQ, I0 ] ; Pinv[] = Tensor[ Sin[Theta_Park[]], Cos[Theta_Park[]], 1, Sin[Theta_Park[]-2*Pi/3], Cos[Theta_Park[]-2*Pi/3], 1, @@ -122,39 +248,47 @@ Function { Flux_dq0[] = P[] * Vector[#11, #22, #33] ; If(Flag_ParkTransformation) - II = 1 ; + II = 1. ; IA[] = CompX[ Iabc[] ] ; IB[] = CompY[ Iabc[] ] ; IC[] = CompZ[ Iabc[] ] ; EndIf If(!Flag_ParkTransformation) - IA[] = F_Sin_wt_p[]{2*Pi*Freq, pA} ; - IB[] = F_Sin_wt_p[]{2*Pi*Freq, pB} ; - IC[] = F_Sin_wt_p[]{2*Pi*Freq, pC} ; + If(!Flag_ConstantSource) + IA[] = F_Sin_wt_p[]{2*Pi*Freq, pA} ; + IB[] = F_Sin_wt_p[]{2*Pi*Freq, pB} ; + IC[] = F_Sin_wt_p[]{2*Pi*Freq, pC} ; + EndIf + If(Flag_ConstantSource) + IA[] = 1. ; + IB[] = 1. ; + IC[] = 1. ; + Frelax[] =1; + EndIf js[PhaseA] = II * NbWires[]/SurfCoil[] * IA[] * Idir[] * Vector[0, 0, 1] ; js[PhaseB] = II * NbWires[]/SurfCoil[] * IB[] * Idir[] * Vector[0, 0, 1] ; js[PhaseC] = II * NbWires[]/SurfCoil[] * IC[] * Idir[] * Vector[0, 0, 1] ; EndIf - Velocity[] = wr*XYZ[]/\Vector[0,0,1] ; + Velocity[] = wr*XYZ[]/\Vector[0,0,-1] ; // Maxwell stress tensor T_max[] = ( SquDyadicProduct[$1] - SquNorm[$1] * TensorDiag[0.5, 0.5, 0.5] ) / mu0 ; - T_max_cplx[] = ( TensorV[CompX[$1]*Conj[$1],CompY[$1]*Conj[$1],CompZ[$1]*Conj[$1]] - $1*Conj[$1] * TensorDiag[0.5, 0.5, 0.5] ) / mu0 ; // Check if valid - + T_max_cplx[] = Re[0.5*(TensorV[CompX[$1]*Conj[$1], CompY[$1]*Conj[$1], CompZ[$1]*Conj[$1]] + - $1*Conj[$1] * TensorDiag[0.5, 0.5, 0.5] ) / mu0] ; + T_max_cplx_2f[] = 0.5*(TensorV[CompX[$1]*$1, CompY[$1]*$1, CompZ[$1]*$1] - + $1*$1 * TensorDiag[0.5, 0.5, 0.5] ) / mu0 ; // To check ???? AngularPosition[] = (Atan2[$Y,$X]#7 >= 0.)? #7 : #7+2*Pi ; - RotatePZ[] = Rotate[ Vector[$X,$Y,$Z], 0, 0, $1 ] ;//Watch out: Do not use XYZ[]! - - // Kinematics - Inertia = 8.3e-3 ; //87 - Friction[] = 0 ; + RotatePZ[] = Rotate[ Vector[$X,$Y,$Z], 0, 0, $1 ] ; //Watch out: Do not use XYZ[]! - Fmag[] = #55 ; // Computed in postprocessing + // Torque computed in postprocessing (Trotor in #54, Tstator in #55, Tmb in #56) + Torque_mag[] = #55 ; } + //------------------------------------------------------------------------------------- Jacobian { @@ -184,17 +318,21 @@ Constraint { { Region Surf_bn0 ; Type Assign; Value 0. ; } If(Flag_Symmetry) - { Region Surf_cutA1; SubRegion Region[{Surf_Inf,Surf_bn0}]; Type Link; - RegionRef Surf_cutA0; SubRegionRef Region[{Surf_Inf,Surf_bn0}]; - Coefficient (NbrPoles%2)?-1:1 ; Function RotatePZ[-NbrPoles*2*Pi/NbrPolesTot]; } + { Region Surf_cutA1; SubRegion Region[{Surf_Inf,Surf_bn0, Point_ref}]; Type Link; + RegionRef Surf_cutA0; SubRegionRef Region[{Surf_Inf,Surf_bn0, Point_ref}]; + Coefficient ((NbrPolesInModel%2)?-1:1) ; + Function RotatePZ[-NbrPolesInModel*2*Pi/NbrPolesTot]; } { Region Surf_cutA1; Type Link; RegionRef Surf_cutA0; - Coefficient (NbrPoles%2)?-1:1 ; Function RotatePZ[-NbrPoles*2*Pi/NbrPolesTot]; } + Coefficient (NbrPolesInModel%2)?-1:1 ; + Function RotatePZ[-NbrPolesInModel*2*Pi/NbrPolesTot]; } //For the moving band For k In {1:SymmetryFactor-1} - { Region Rotor_Bnd_MB~{k+1} ; SubRegion Rotor_Bnd_MB~{(k!=SymmetryFactor-1)?k+2:1}; Type Link; + { Region Rotor_Bnd_MB~{k+1} ; + SubRegion Rotor_Bnd_MB~{(k!=SymmetryFactor-1)?k+2:1}; Type Link; RegionRef Rotor_Bnd_MB_1; SubRegionRef Rotor_Bnd_MB_2; - Coefficient ((NbrPoles%2)?-1:1)^(k); Function RotatePZ[-k*NbrPoles*2*Pi/NbrPolesTot]; } + Coefficient ((NbrPolesInModel%2)?-1:1)^(k); + Function RotatePZ[-k*NbrPolesInModel*2*Pi/NbrPolesTot]; } EndFor EndIf @@ -204,9 +342,9 @@ Constraint { { Name Current_2D ; Case { If(Flag_SrcType_Stator==1) - { Region PhaseA ; Value II*Idir[] ; TimeFunction IA[]; } - { Region PhaseB ; Value II*Idir[] ; TimeFunction IB[]; } - { Region PhaseC ; Value II*Idir[] ; TimeFunction IC[]; } + { Region PhaseA ; Value Ia*Idir[] ; TimeFunction IA[]; } + { Region PhaseB ; Value Ib*Idir[] ; TimeFunction IB[]; } + { Region PhaseC ; Value Ic*Idir[] ; TimeFunction IC[]; } EndIf If(Flag_SrcType_Rotor==1) { Region Rotor_Inds ; Value Ie*Idir[] ; } @@ -216,56 +354,53 @@ Constraint { { Name Voltage_2D ; Case { - { Region RotorC ; Value 0. ; } // Not needed if Global equation not in formulation - { Region StatorC ; Value 0. ; } // Not needed if Global equation not in formulation + If(!Flag_Cir_RotorCage) + { Region RotorC ; Value 0. ; } + EndIf + { Region StatorC ; Value 0. ; } } } { Name Current_Cir ; Case { If(Flag_Cir && Flag_SrcType_Stator==1) - { Region Input1 ; Value II ; TimeFunction IA[]; } - { Region Input2 ; Value II ; TimeFunction IB[]; } - { Region Input3 ; Value II ; TimeFunction IC[]; } + { Region Input1 ; Value Ia ; TimeFunction IA[]; } + { Region Input2 ; Value Ib ; TimeFunction IB[]; } + { Region Input3 ; Value Ic ; TimeFunction IC[]; } EndIf } } - { Name Voltage_Cir ; // Example induction machine + { Name Voltage_Cir ; Case { - If(Flag_Cir && Flag_SrcType_Stator==2 && !Flag_NL) - { Region Input1 ; Value VV ; TimeFunction IA[]; } - { Region Input2 ; Value VV ; TimeFunction IB[]; } - { Region Input3 ; Value VV ; TimeFunction IC[]; } - EndIf - If(Flag_Cir && Flag_SrcType_Stator==2 && Flag_NL) - { Region Input1 ; Value VV ; TimeFunction IA[]*Frelax[]; } - { Region Input2 ; Value VV ; TimeFunction IB[]*Frelax[]; } - { Region Input3 ; Value VV ; TimeFunction IC[]*Frelax[]; } + If(Flag_Cir && Flag_SrcType_Stator==2) + { Region Input1 ; Value Va ; TimeFunction IA[]*Frelax[]; } + { Region Input2 ; Value Vb ; TimeFunction IB[]*Frelax[]; } + { Region Input3 ; Value Vc ; TimeFunction IC[]*Frelax[]; } EndIf } } //Kinetics - { Name CurrentPosition ; + { Name CurrentPosition ; // [m] Case { { Region DomainKin ; Type Init ; Value 0.#66 ; } } } - { Name CurrentVelocity ; + { Name CurrentVelocity ; // [rad/s] Case { - { Region DomainKin ; Type Init ; Value wr ; } // wr in [0,1200] rad/s + { Region DomainKin ; Type Init ; Value 0. ; } } } } -//----------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------- FunctionSpace { - + // Magnetic Vector Potential { Name Hcurl_a_2D ; Type Form1P ; BasisFunction { { Name se1 ; NameOfCoef ae1 ; Function BF_PerpendicularEdge ; @@ -307,7 +442,8 @@ FunctionSpace { } } - { Name Hregion_Z ; Type Scalar ; // Circuit equations + // For circuit equations + { Name Hregion_Z ; Type Scalar ; BasisFunction { { Name sr ; NameOfCoef ir ; Function BF_Region ; Support DomainZt_Cir ; Entity DomainZt_Cir ; } @@ -322,14 +458,14 @@ FunctionSpace { } } - // For use in Mechanical equation + // For mechanical equation { Name Position ; Type Scalar ; BasisFunction { - { Name sr ; NameOfCoef ir ; Function BF_Region ; + { Name sr ; NameOfCoef pr ; Function BF_Region ; Support DomainKin ; Entity DomainKin ; } } GlobalQuantity { - { Name P ; Type AliasOf ; NameOfCoef ir ; } + { Name P ; Type AliasOf ; NameOfCoef pr ; } } Constraint { { NameOfCoef P ; EntityType Region ; NameOfConstraint CurrentPosition ; } @@ -339,10 +475,10 @@ FunctionSpace { { Name Velocity ; Type Scalar ; BasisFunction { - { Name sr ; NameOfCoef ir ; Function BF_Region ; + { Name sr ; NameOfCoef vr ; Function BF_Region ; Support DomainKin ; Entity DomainKin ; } } GlobalQuantity { - { Name V ; Type AliasOf ; NameOfCoef ir ; } + { Name V ; Type AliasOf ; NameOfCoef vr ; } } Constraint { { NameOfCoef V ; EntityType Region ; NameOfConstraint CurrentVelocity ; } @@ -351,67 +487,11 @@ FunctionSpace { } -//----------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------- Formulation { - { Name MagSta_a_2D ; Type FemEquation ; - Quantity { - { Name a ; Type Local ; NameOfSpace Hcurl_a_2D ; } - - { Name ir ; Type Local ; NameOfSpace Hregion_i_Mag_2D ; } - { Name Ub ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ub] ; } - { Name Ib ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ib] ; } - - { Name Uz ; Type Global ; NameOfSpace Hregion_Z [Uz] ; } - { Name Iz ; Type Global ; NameOfSpace Hregion_Z [Iz] ; } - } - - Equation { - Galerkin { [ nu[{d a}] * Dof{d a} , {d a} ] ; - In Domain ; Jacobian Vol ; Integration I1 ; } - Galerkin { JacNL [ dhdb_NL[{d a}] * Dof{d a} , {d a} ] ; - In DomainNL ; Jacobian Vol ; Integration I1 ; } - - Galerkin { [ 0*Dof{d a} , {d a} ] ; // DO NOT REMOVE!!! - Keeping track of Dofs in auxiliary line of MB if Symmetry=1 - In Rotor_Bnd_MBaux; Jacobian Vol; Integration I1; } - - Galerkin { [ -nu[] * br[] , {d a} ] ; - In DomainM ; Jacobian Vol ; Integration I1 ; } - - Galerkin { [ -js[] , {a} ] ; - In DomainS ; Jacobian Vol ; Integration I1 ; } - - Galerkin { [ -NbWires[]/SurfCoil[] * Dof{ir} , {a} ] ; - In DomainB ; Jacobian Vol ; Integration I1 ; } - Galerkin { DtDof [ AxialLength * NbWires[]/SurfCoil[] * Dof{a} , {ir} ] ; - In DomainB ; Jacobian Vol ; Integration I1 ; } - GlobalTerm { [ Dof{Ub}/SymmetryFactor, {Ib} ] ; In DomainB ; } - Galerkin { [ Rb[]/SurfCoil[]* Dof{ir} , {ir} ] ; - In DomainB ; Jacobian Vol ; Integration I1 ; } - - // GlobalTerm { [ Resistance[] * Dof{Ib} , {Ib} ] ; In DomainB ; } - // The above term can replace: - // Galerkin{ [ NbWires[]/SurfCoil[] / sigma[] * NbWires[]/SurfCoil[] * Dof{ir}, {ir} ] - // if we have an estimation of the resistance of DomainB, via e.g. measurements - - If(Flag_Cir) - GlobalTerm { NeverDt[ Dof{Uz} , {Iz} ] ; In Resistance_Cir ; } - GlobalTerm { NeverDt[ Resistance[] * Dof{Iz} , {Iz} ] ; In Resistance_Cir ; } - - GlobalTerm { [ 0. * Dof{Iz} , {Iz} ] ; In DomainSource_Cir ; } - GlobalTerm { [ 0. * Dof{Uz} , {Iz} ] ; In DomainZt_Cir ; } - - GlobalEquation { - Type Network ; NameOfConstraint ElectricalCircuit ; - { Node {Iz}; Loop {Uz}; Equation {Uz}; In DomainZt_Cir ; } - { Node {Ib}; Loop {Ub}; Equation {Ub}; In DomainB ; } - } - EndIf - } - } - - { Name MagDyn_a_2D ; Type FemEquation ; + { Name MagStaDyn_a_2D ; Type FemEquation ; Quantity { { Name a ; Type Local ; NameOfSpace Hcurl_a_2D ; } { Name ur ; Type Local ; NameOfSpace Hregion_u_Mag_2D ; } @@ -431,7 +511,9 @@ Formulation { Galerkin { JacNL [ dhdb_NL[{d a}] * Dof{d a} , {d a} ] ; In DomainNL ; Jacobian Vol ; Integration I1 ; } - Galerkin { [ 0*Dof{d a} , {d a} ] ; // DO NOT REMOVE!!! - Keeping track of Dofs in auxiliary line of MB if Symmetry=1 + // DO NOT REMOVE!!! + // Keeping track of Dofs in auxiliar line of MB if Symmetry==1 + Galerkin { [ 0*Dof{d a} , {d a} ] ; In Rotor_Bnd_MBaux; Jacobian Vol; Integration I1; } Galerkin { [ -nu[] * br[] , {d a} ] ; @@ -490,10 +572,9 @@ Formulation { } } + //------------------------------------------------------------------------------------------- +// Mechanics - //-------------------------------------------------------------------------- - // Mechanics - //-------------------------------------------------------------------------- { Name Mechanical ; Type FemEquation ; Quantity { { Name V ; Type Global ; NameOfSpace Velocity [V] ; } // velocity @@ -502,7 +583,8 @@ Formulation { Equation { GlobalTerm { DtDof [ Inertia * Dof{V} , {V} ] ; In DomainKin ; } GlobalTerm { [ Friction[] * Dof{V} , {V} ] ; In DomainKin ; } - GlobalTerm { [ -Fmag[] , {V} ] ; In DomainKin ; } + GlobalTerm { [ Torque_mec[] , {V} ] ; In DomainKin ; } + GlobalTerm { [ -Torque_mag[] , {V} ] ; In DomainKin ; } GlobalTerm { DtDof [ Dof{P} , {P} ] ; In DomainKin ; } GlobalTerm { [-Dof{V} , {P} ] ; In DomainKin ; } @@ -511,186 +593,145 @@ Formulation { } -//----------------------------------------------------------------------------------------------- +//----------------------------------------------------------------------------------------- Resolution { - { Name TimeDomain ; + { Name Analysis ; System { - { Name A ; NameOfFormulation MagDyn_a_2D ; } + If(Flag_AnalysisType==2) + { Name A ; NameOfFormulation MagStaDyn_a_2D ; Type ComplexValue ; Frequency Freq ; } + EndIf + If(Flag_AnalysisType<2) + { Name A ; NameOfFormulation MagStaDyn_a_2D ; } + If(!Flag_ImposedSpeed) // Full dynamics + { Name M ; NameOfFormulation Mechanical ; } + EndIf + EndIf } Operation { CreateDir["res/"]; - If[ Clean_Results==1 ]{ - DeleteFile["res/temp.dat"]; - DeleteFile["res/Tr.dat"]; DeleteFile["res/Ts.dat"]; DeleteFile["res/Tmb.dat"]; - DeleteFile["res/Ua.dat"]; DeleteFile["res/Ub.dat"]; DeleteFile["res/Uc.dat"]; - DeleteFile["res/Ia.dat"]; DeleteFile["res/Ib.dat"]; DeleteFile["res/Ic.dat"]; - DeleteFile["res/Flux_a.dat"]; DeleteFile["res/Flux_b.dat"]; DeleteFile["res/Flux_c.dat"]; - DeleteFile["res/Flux_d.dat"]; DeleteFile["res/Flux_q.dat"]; DeleteFile["res/Flux_0.dat"]; - } - InitMovingBand2D[MB] ; - MeshMovingBand2D[MB] ; - InitSolution[A] ; - If[Flag_ParkTransformation && Flag_SrcType_Stator==1]{ PostOperation[ThetaPark_IABC] ; } - If[!Flag_NL]{ - Generate[A] ; Solve[A] ; - } - Else{ - //IterativeLoop[Nb_max_iter, stop_criterion, relaxation_factor] - // { GenerateJac[A] ; SolveJac[A] ; } - IterativeLoopN[ Nb_max_iter, relaxation_factor, - System { {A, reltol, abstol, Solution MeanL2Norm}} ] - { GenerateJac[A] ; SolveJac[A] ; } - } - SaveSolution[A] ; - PostOperation[Get_LocalFields] ; - PostOperation[Get_GlobalQuantities] ; - } - } + If(Clean_Results==1 && variableFrequencyLoop == initialFrequencyLoop) + // FIXME == > variable controlling loop in Onelab + + DeleteFile[StrCat[ResDir, StrCat["temp",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Tr",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Ts",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Tmb",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Ua",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Ub",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Uc",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Ia",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Ib",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Ic",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Flux_a",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Flux_b",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Flux_c",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Flux_d",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Flux_q",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Flux_0",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["JL",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["JL_Fe",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["P",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["V",ExtGnuplot]]]; + DeleteFile[StrCat[ResDir, StrCat["Irotor",ExtGnuplot]]]; + EndIf - { Name TimeDomain_Loop ; - System { - { Name A ; NameOfFormulation MagDyn_a_2D ; } - } - Operation { - CreateDir["res/"]; - If[ Clean_Results==1 ]{ - DeleteFile["res/temp.dat"]; - DeleteFile["res/Tr.dat"]; DeleteFile["res/Ts.dat"]; DeleteFile["res/Tmb.dat"]; - DeleteFile["res/Ua.dat"]; DeleteFile["res/Ub.dat"]; DeleteFile["res/Uc.dat"]; - DeleteFile["res/Ia.dat"]; DeleteFile["res/Ib.dat"]; DeleteFile["res/Ic.dat"]; - DeleteFile["res/Flux_a.dat"]; DeleteFile["res/Flux_b.dat"]; DeleteFile["res/Flux_c.dat"]; - DeleteFile["res/Flux_d.dat"]; DeleteFile["res/Flux_q.dat"]; DeleteFile["res/Flux_0.dat"]; - } - InitMovingBand2D[MB] ; - MeshMovingBand2D[MB] ; - InitSolution[A] ; - TimeLoopTheta[time0, timemax, delta_time, 1.]{ // Euler implicit (1) -- Crank-Nicolson (0.5) - If[Flag_ParkTransformation && Flag_SrcType_Stator==1]{ PostOperation[ThetaPark_IABC] ; } - If[!Flag_NL]{ - Generate[A]; Solve[A]; - } - Else{ - // IterativeLoop[Nb_max_iter, stop_criterion, relaxation_factor] { - // GenerateJac[A] ; SolveJac[A] ; } - IterativeLoopN[ - Nb_max_iter, relaxation_factor, System { {A, reltol, abstol, Solution MeanL2Norm}} ]{ + If(Flag_AnalysisType==0 || Flag_AnalysisType==2) + If(Flag_AnalysisType==2) + SetTime[variableFrequencyLoop]; + EndIf + + InitMovingBand2D[MB] ; + MeshMovingBand2D[MB] ; + InitSolution[A] ; + + If(Flag_ParkTransformation && Flag_SrcType_Stator==1) + PostOperation[ThetaPark_IABC] ; + EndIf + If(!Flag_NL) + Generate[A] ; Solve[A] ; + EndIf + If(Flag_NL) + IterativeLoop[Nb_max_iter, stop_criterion, relaxation_factor]{ GenerateJac[A] ; SolveJac[A] ; } - } - SaveSolution[A]; + EndIf + SaveSolution[A] ; PostOperation[Get_LocalFields] ; - If[ $TimeStep > 1 ]{ - PostOperation[Get_GlobalQuantities] ; + PostOperation[Get_GlobalQuantities] ; + If(Flag_AnalysisType==0) + PostOperation[Get_Torque]; + EndIf + If(Flag_AnalysisType==2) + PostOperation[Get_Torque_cplx]; + EndIf + EndIf // End Flag_AnalysisType==0 (Static) Flag_AnalysisType==2 (Frequency) + + If(Flag_AnalysisType==1) + InitMovingBand2D[MB]; + MeshMovingBand2D[MB]; + InitSolution[A]; + + If(!Flag_ImposedSpeed) // Full dynamics + InitSolution[M]; + InitSolution[M]; // Twice for avoiding warning (a = d_t^2 x) + EndIf + + TimeLoopTheta[time0, timemax, delta_time, 1.]{ + // Euler implicit (1) -- Crank-Nicolson (0.5) + // FIXME like this theta cannot be controlled by the user + If(Flag_ParkTransformation && Flag_SrcType_Stator==1) + PostOperation[ThetaPark_IABC]; + EndIf + If(!Flag_NL) + Generate[A]; Solve[A]; + EndIf + If(Flag_NL) + IterativeLoop[Nb_max_iter, stop_criterion, relaxation_factor] { + GenerateJac[A] ; SolveJac[A] ; } + EndIf + SaveSolution[A]; + + PostOperation[Get_LocalFields] ; + Test[ $TimeStep > 1 ]{ + PostOperation[Get_GlobalQuantities]; + PostOperation[Get_Torque] ; + } + + If(!Flag_ImposedSpeed) + Generate[M]; Solve[M]; SaveSolution[M]; + PostOperation[Mechanical] ; + EndIf + + ChangeOfCoordinates[ NodesOf[Rotor_Moving], RotatePZ[delta_theta[]]]; + If(!Flag_ImposedSpeed) + Evaluate[ #77#66 ]; //Keep track of previous angular position + EndIf + MeshMovingBand2D[MB] ; } - ChangeOfCoordinates[ NodesOf[Rotor_Moving], RotatePZ[delta_theta]] ; - MeshMovingBand2D[MB] ; - } - } - } - - { Name FrequencyDomain ; - System { - { Name A ; NameOfFormulation MagDyn_a_2D ; Type ComplexValue ; Frequency Freq ; } - } - Operation { - If[ Clean_Results==1 && wr == 0.]{ - DeleteFile["res/Tr.dat"]; DeleteFile["res/Ts.dat"]; DeleteFile["res/Tmb.dat"]; - DeleteFile["res/Ua.dat"]; DeleteFile["res/Ub.dat"]; DeleteFile["res/Uc.dat"]; - DeleteFile["res/Ia.dat"]; DeleteFile["res/Ib.dat"]; DeleteFile["res/Ic.dat"]; - } - SetTime[wr]; - InitMovingBand2D[MB] ; - MeshMovingBand2D[MB] ; - Generate[A] ; Solve[A] ; SaveSolution[A]; - PostOperation[Map_LocalFields] ; - PostOperation[Torque_Emf_Flux] ; - } - } - - /* - { Name MagDyn_Kin ; - System { - { Name A ; NameOfFormulation MagDyn_a_2D ; } - { Name M ; NameOfFormulation Mechanical ; } - } - Operation { - ChangeOfCoordinates [ NodesOf[Rotor_Moving], RotatePZ[theta0] ] ; // Initial position (supposing initial mesh with angleR=0) - InitMovingBand2D[MB] ; MeshMovingBand2D[MB] ; - - InitSolution[A] ; SaveSolution[A] ; - InitSolution[M] ; SaveSolution[M] ; - - TimeLoopTheta[time0, timemax, delta_time, 1.]{ - Generate[A] ; Solve[A] ; SaveSolution[A] ; - PostOperation[MagDyn_a_2D] ; - - Generate[M] ; Solve[M] ; SaveSolution[M] ; - PostOperation[Mechanical] ; - - ChangeOfCoordinates [ NodesOf[Rotor_Moving], RotatePZ[#77-#66] ] ; - Evaluate[ #77#66 ] ; //Keep track of previous angular position - MeshMovingBand2D[MB] ; - } + EndIf // End Flag_AnalysisType==1 (Time domain) } } - */ - } -//----------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------- PostProcessing { - { Name MagSta_a_2D ; NameOfFormulation MagSta_a_2D ; - PostQuantity { - { Name a ; Value { Term { [ {a} ] ; In Domain ; Jacobian Vol ; } } } - { Name az ; Value { Term { [ CompZ[{a}] ] ; In Domain ; Jacobian Vol ; } } } - { Name b ; Value { Term { [ {d a} ] ; In Domain ; Jacobian Vol ; } } } - { Name boundary ; Value { Term { [ {d a} ] ; In Dummy ; Jacobian Vol ; } } } - { Name br ; Value { Term { [ br[] ] ; In DomainM ; Jacobian Vol ; } } } - - { Name Flux ; Value { Integral { [ SymmetryFactor*AxialLength*Idir[]*NbWires[]/SurfCoil[]* CompZ[{a}] ] ; - In Inds ; Jacobian Vol ; Integration I1 ; } } } - { Name Force_vw ; Value { - Integral { Type Global ; [ 0.5 * nu[] * VirtualWork [{d a}] * AxialLength ]; - In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; - Jacobian Vol ; Integration I1 ; } } } - - { Name Torque_Maxwell ; Value { - Integral { - [ CompZ [ XYZ[] /\ (T_max[{d a}] * XYZ[]) ]*2*Pi*AxialLength/SurfaceArea[] ] ; - In Domain ; Jacobian Vol ; Integration I1; } } } - - { Name Torque_vw ; Value { - Integral { Type Global ; - [ CompZ[ 0.5 * nu[] * XYZ[] /\ VirtualWork[{d a}] ] * AxialLength ]; - In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; - Jacobian Vol ; Integration I1 ; } } } - - { Name U ; Value { - Term { [ {Ub} ] ; In DomainB ; } - Term { [ {Uz} ] ; In DomainZt_Cir ; } - } } - - { Name I ; Value { - Term { [ {Ib} ] ; In DomainB ; } - Term { [ {Iz} ] ; In DomainZt_Cir ; } - } } - - } - } - - { Name MagDyn_a_2D ; NameOfFormulation MagDyn_a_2D ; + { Name MagStaDyn_a_2D ; NameOfFormulation MagStaDyn_a_2D ; PostQuantity { { Name a ; Value { Term { [ {a} ] ; In Domain ; Jacobian Vol ; } } } { Name az ; Value { Term { [ CompZ[{a}] ] ; In Domain ; Jacobian Vol ; } } } { Name b ; Value { Term { [ {d a} ] ; In Domain ; Jacobian Vol ; } } } - { Name boundary ; Value { Term { [ 1 ] ; In Dummy ; Jacobian Vol ; } } } // Dummy quantity - { Name b_radial ; Value { Term { [ {d a}* Vector[ Cos[AngularPosition[]#4], Sin[#4], 0.] ] ; In Domain ; Jacobian Vol ; } } } - { Name b_tangent ; Value { Term { [ {d a}* Vector[ -Sin[AngularPosition[]#4], Cos[#4], 0.] ] ; In Domain ; Jacobian Vol ; } } } + { Name boundary ; Value { Term { [ 1 ] ; In Dummy ; Jacobian Vol ; } } } // Dummy quantity - for visualization + { Name b_radial ; + Value { Term { [ {d a}* Vector[ Cos[AngularPosition[]#4], Sin[#4], 0.] ] ; + In Domain ; Jacobian Vol ; } } } + { Name b_tangent ; + Value { Term { [ {d a}* Vector[ -Sin[AngularPosition[]#4], Cos[#4], 0.] ] ; + In Domain ; Jacobian Vol ; } } } { Name js ; Value { Term { [ js[] ] ; In DomainS ; Jacobian Vol ; } } } { Name br ; Value { Term { [ br[] ] ; In DomainM ; Jacobian Vol ; } } } @@ -710,8 +751,10 @@ PostProcessing { { Name rhoj2 ; Value { - Term { [ sigma[]*SquNorm[ Dt[{a}]+{ur}] ] ; In Region[{DomainC,-DomainV}] ; Jacobian Vol ; } - Term { [ sigma[]*SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ] ; In DomainV ; Jacobian Vol ; } + Term { [ sigma[]*SquNorm[ Dt[{a}]+{ur}] ] ; + In Region[{DomainC,-DomainV}] ; Jacobian Vol ; } + Term { [ sigma[]*SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ] ; + In DomainV ; Jacobian Vol ; } Term { [ 1./sigma[]*SquNorm[ IA[]*{ir} ] ] ; In PhaseA ; Jacobian Vol ; } Term { [ 1./sigma[]*SquNorm[ IB[]*{ir} ] ] ; In PhaseB ; Jacobian Vol ; } Term { [ 1./sigma[]*SquNorm[ IC[]*{ir} ] ] ; In PhaseC ; Jacobian Vol ; } @@ -720,34 +763,45 @@ PostProcessing { { Name JouleLosses ; Value { - Integral { [ sigma[] * SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ] ; In Region[{DomainC,-DomainV}] ; Jacobian Vol ; Integration I1 ; } - Integral { [ sigma[] * SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ] ; In DomainV ; Jacobian Vol ; Integration I1 ; } - Integral { [ 1./sigma[]*SquNorm[ IA[]*{ir} ] ] ; In PhaseA ; Jacobian Vol ; Integration I1 ; } - Integral { [ 1./sigma[]*SquNorm[ IB[]*{ir} ] ] ; In PhaseB ; Jacobian Vol ; Integration I1 ; } - Integral { [ 1./sigma[]*SquNorm[ IC[]*{ir} ] ] ; In PhaseC ; Jacobian Vol ; Integration I1 ; } + Integral { [ sigma[] * SquNorm[ Dt[{a}]+{ur} ] ] ; + In Region[{DomainC,-DomainV}] ; Jacobian Vol ; Integration I1 ; } + Integral { [ sigma[] * SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ] ; + In DomainV ; Jacobian Vol ; Integration I1 ; } + Integral { [ 1./sigma[]*SquNorm[ IA[]*{ir} ] ] ; + In PhaseA ; Jacobian Vol ; Integration I1 ; } + Integral { [ 1./sigma[]*SquNorm[ IB[]*{ir} ] ] ; + In PhaseB ; Jacobian Vol ; Integration I1 ; } + Integral { [ 1./sigma[]*SquNorm[ IC[]*{ir} ] ] ; + In PhaseC ; Jacobian Vol ; Integration I1 ; } } } - { Name Flux ; Value { Integral { [ SymmetryFactor*AxialLength*Idir[]*NbWires[]/SurfCoil[]* CompZ[{a}] ] ; + { Name Flux ; + Value { + Integral { [ SymmetryFactor*AxialLength*Idir[]*NbWires[]/SurfCoil[]* CompZ[{a}] ] ; In Inds ; Jacobian Vol ; Integration I1 ; } } } - { Name Force_vw ; // Force computation by Virtual Works + { Name Force_vw ; + // Force computation by Virtual Works Value { Integral { Type Global ; [ 0.5 * nu[] * VirtualWork [{d a}] * AxialLength ]; - In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; Jacobian Vol ; Integration I1 ; } + In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; + Jacobian Vol ; Integration I1 ; } } } - { Name Torque_vw ; Value { // Torque computation via Virtual Works + { Name Torque_vw ; Value { + // Torque computation via Virtual Works Integral { Type Global ; [ CompZ[ 0.5 * nu[] * XYZ[] /\ VirtualWork[{d a}] ] * AxialLength ]; - In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; Jacobian Vol ; Integration I1 ; } + In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; + Jacobian Vol ; Integration I1 ; } } } - - { Name Torque_Maxwell ; // Torque computation via Maxwell stress tensor + { Name Torque_Maxwell ; + // Torque computation via Maxwell stress tensor Value { Integral { [ CompZ [ XYZ[] /\ (T_max[{d a}] * XYZ[]) ] * 2*Pi*AxialLength/SurfaceArea[] ] ; @@ -755,7 +809,8 @@ PostProcessing { } } - { Name Torque_Maxwell_cplx ; // Torque computation via Maxwell stress tensor + { Name Torque_Maxwell_cplx ; + // Torque computation via Maxwell stress tensor - frequency domain Value { Integral { [ CompZ [ XYZ[] /\ (T_max_cplx[{d a}] * XYZ[]) ] * 2*Pi*AxialLength/SurfaceArea[] ] ; @@ -763,7 +818,17 @@ PostProcessing { } } - { Name ComplexPower ; // S = P + i*Q + { Name Torque_Maxwell_cplx_2f ; + // Torque computation via Maxwell stress tensor, component at twice the frequency + Value { + Integral { + [ CompZ [ XYZ[] /\ (T_max_cplx_2f[{d a}] * XYZ[]) ] * 2*Pi*AxialLength/SurfaceArea[] ] ; + In Domain ; Jacobian Vol ; Integration I1; } + } + } + + { Name ComplexPower ; + // S = P + i*Q Value { Integral { [ Complex[ sigma[]*SquNorm[Dt[{a}]+{ur}], nu[]*SquNorm[{d a}] ] ] ; In Region[{DomainC,-DomainV}] ; Jacobian Vol ; Integration I1 ; } @@ -795,144 +860,232 @@ PostProcessing { } } - // For getting the value of some functions: - { Name RotorPosition_deg ; Value { Term { Type Global; [ RotorPosition_deg[] ] ; In DomainDummy ; } } } - { Name Theta_Park_deg ; Value { Term { Type Global; [ Theta_Park_deg[] ] ; In DomainDummy ; } } } - { Name IA ; Value { Term { Type Global; [ IA[] ] ; In DomainDummy ; } } } - { Name IB ; Value { Term { Type Global; [ IB[] ] ; In DomainDummy ; } } } - { Name IC ; Value { Term { Type Global; [ IC[] ] ; In DomainDummy ; } } } - - { Name Flux_d ; Value { Term { Type Global; [ CompX[Flux_dq0[]] ] ; In DomainDummy ; } } } - { Name Flux_q ; Value { Term { Type Global; [ CompY[Flux_dq0[]] ] ; In DomainDummy ; } } } - { Name Flux_0 ; Value { Term { Type Global; [ CompZ[Flux_dq0[]] ] ; In DomainDummy ; } } } + { Name RotorPosition_deg ; + Value { Term { Type Global; [ RotorPosition_deg[] ] ; In DomainDummy ; } } } + { Name Theta_Park_deg ; + Value { Term { Type Global; [ Theta_Park_deg[] ] ; In DomainDummy ; } } } + { Name IA ; + Value { Term { Type Global; [ IA[] ] ; In DomainDummy ; } } } + { Name IB ; + Value { Term { Type Global; [ IB[] ] ; In DomainDummy ; } } } + { Name IC ; + Value { Term { Type Global; [ IC[] ] ; In DomainDummy ; } } } + { Name Flux_d ; + Value { Term { Type Global; [ CompX[Flux_dq0[]] ] ; In DomainDummy ; } } } + { Name Flux_q ; + Value { Term { Type Global; [ CompY[Flux_dq0[]] ] ; In DomainDummy ; } } } + { Name Flux_0 ; + Value { Term { Type Global; [ CompZ[Flux_dq0[]] ] ; In DomainDummy ; } } } } } { Name Mechanical ; NameOfFormulation Mechanical ; PostQuantity { - { Name P ; Value { Term { [ {P} ] ; In DomainKin ; } } } //Position - { Name V ; Value { Term { [ {V} ] ; In DomainKin ; } } } //Velocity - { Name Vrpm ; Value { Term { [ {V}*30/Pi ] ; In DomainKin ; } } } //Velocity in rpm + { Name P ; Value { Term { [ {P} ] ; In DomainKin ; } } } // Position [rad] + { Name Pdeg ; Value { Term { [ {P}*180/Pi ] ; In DomainKin ; } } } // Position [deg] + { Name V ; Value { Term { [ {V} ] ; In DomainKin ; } } } // Velocity [rad/s] + { Name Vrpm ; Value { Term { [ {V}*30/Pi ] ; In DomainKin ; } } } // Velocity [rpm] } } } -//----------------------------------------------------------------------------------------------- -//----------------------------------------------------------------------------------------------- - -If (Flag_ParkTransformation) -PostOperation ThetaPark_IABC UsingPost MagDyn_a_2D { - Print[ RotorPosition_deg, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], - SendToServer "Output/1RotorPosition", Color "LightYellow" ]; - Print[ Theta_Park_deg, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], - SendToServer "Output/1Theta_Park", Color "LightYellow" ]; - Print[ IA, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], SendToServer "Output/2IA", Color "Pink" ]; - Print[ IB, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], SendToServer "Output/2IB", Color "Yellow" ]; - Print[ IC, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], SendToServer "Output/2IC", Color "LightGreen" ]; -} -EndIf -PostOperation Get_LocalFields UsingPost MagDyn_a_2D { - Print[ ir, OnElementsOf Stator_Inds, File StrCat[Dir, StrCat["ir_stator",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ; - Print[ ir, OnElementsOf Rotor_Inds, File StrCat[Dir, StrCat["ir_rotor",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ; - //Print[ br, OnElementsOf #{DomainM}, File StrCat[Dir, StrCat["b",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ; - Print[ b, OnElementsOf Domain, File StrCat[Dir, StrCat["b",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ; - Print[ boundary, OnElementsOf Dummy, File StrCat[Dir, StrCat["bnd",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ; - Print[ az, OnElementsOf Domain, File StrCat[Dir, StrCat["a",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps ] ; +//------------------------------------------------------------------------------------------- + +po = "Output - Electromagnetics/"; +poI = StrCat[po,"0Current [A]/"]; +poV = StrCat[po,"1Voltage [V]/"]; +poF = StrCat[po,"2Flux linkage [Vs]/"]; +poJL = StrCat[po,"3Joule Losses [W]/"]; +po_mec = "Output - Mechanics/"; +po_mecT = StrCat[po_mec,"0Torque [Nm]/"]; + +//------------------------------------------------------------------------------------------- + +PostOperation Get_LocalFields UsingPost MagStaDyn_a_2D { + Print[ ir, OnElementsOf Stator_Inds, + File StrCat[ResDir, StrCat["ir_stator",ExtGmsh]], LastTimeStepOnly, + AppendTimeStepToFileName Flag_SaveAllSteps] ; + Print[ ir, OnElementsOf Rotor_Inds, + File StrCat[ResDir, StrCat["ir_rotor",ExtGmsh]], LastTimeStepOnly, + AppendTimeStepToFileName Flag_SaveAllSteps] ; + Print[ jz, OnElementsOf DomainC, + File StrCat[ResDir, StrCat["jz",ExtGmsh]], LastTimeStepOnly, + AppendTimeStepToFileName Flag_SaveAllSteps ] ; + Print[ b, OnElementsOf Domain, + File StrCat[ResDir, StrCat["b",ExtGmsh]], LastTimeStepOnly, + AppendTimeStepToFileName Flag_SaveAllSteps] ; + Print[ boundary, OnElementsOf Dummy, + File StrCat[ResDir, StrCat["bnd",ExtGmsh]], LastTimeStepOnly, + AppendTimeStepToFileName Flag_SaveAllSteps] ; + Print[ az, OnElementsOf Domain, + File StrCat[ResDir, StrCat["a",ExtGmsh]], LastTimeStepOnly, + AppendTimeStepToFileName Flag_SaveAllSteps ] ; } -PostOperation Get_GlobalQuantities UsingPost MagDyn_a_2D { +PostOperation Get_GlobalQuantities UsingPost MagStaDyn_a_2D { If(!Flag_Cir) - If(!Flag_ParkTransformation) - Print[ I, OnRegion PhaseA_pos, Format Table, - File > StrCat[Dir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IA", Color "Pink" ]; - Print[ I, OnRegion PhaseB_pos, Format Table, - File > StrCat[Dir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IB", Color "Yellow" ]; - Print[ I, OnRegion PhaseC_pos, Format Table, - File > StrCat[Dir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IC", Color "LightGreen" ]; - EndIf - - Print[ U, OnRegion PhaseA_pos, Format Table, - File > StrCat[Dir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/30UA", Color "Pink" ]; - Print[ U, OnRegion PhaseB_pos, Format Table, - File > StrCat[Dir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/31UB", Color "Yellow" ]; - Print[ U, OnRegion PhaseC_pos, Format Table, - File > StrCat[Dir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/32UC", Color "LightGreen" ]; + If(!Flag_ParkTransformation) + Print[ I, OnRegion PhaseA_pos, Format Table, + File > StrCat[ResDir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"A"], Color "Pink" ]; + If(NbrPhases==3) + Print[ I, OnRegion PhaseB_pos, Format Table, + File > StrCat[ResDir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"B"], Color "Yellow" ]; + Print[ I, OnRegion PhaseC_pos, Format Table, + File > StrCat[ResDir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"C"], Color "LightGreen" ]; + EndIf + EndIf + + Print[ U, OnRegion PhaseA_pos, Format Table, + File > StrCat[ResDir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poV,"A"], Color "Pink" ]; + If(NbrPhases==3) + Print[ U, OnRegion PhaseB_pos, Format Table, + File > StrCat[ResDir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poV,"B"], Color "Yellow" ]; + Print[ U, OnRegion PhaseC_pos, Format Table, + File > StrCat[ResDir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poV,"C"], Color "LightGreen" ]; + EndIf EndIf - If(Flag_Cir && Flag_SrcType_Stator==2) + If(Flag_Cir && Flag_SrcType_StatorA==2) Print[ I, OnRegion Input1, Format Table, - File > StrCat[Dir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IA", Color "Pink" ]; - Print[ I, OnRegion Input2, Format Table, - File > StrCat[Dir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IB", Color "Yellow" ]; - Print[ I, OnRegion Input3, Format Table, - File > StrCat[Dir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IC", Color "LightGreen" ]; + File > StrCat[ResDir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"A"], Color "Pink" ]; Print[ U, OnRegion Input1, Format Table, - File > StrCat[Dir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/30UA", Color "Pink" ]; + File > StrCat[ResDir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poV,"A"], Color "Pink" ]; + EndIf + If(Flag_Cir && Flag_SrcType_StatorB==2) + Print[ I, OnRegion Input2, Format Table, + File > StrCat[ResDir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"B"], Color "Yellow" ]; Print[ U, OnRegion Input2, Format Table, - File > StrCat[Dir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/31UB", Color "Yellow" ]; + File > StrCat[ResDir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poV,"B"], Color "Yellow" ]; + EndIf + If(Flag_Cir && Flag_SrcType_StatorB==2) + Print[ I, OnRegion Input3, Format Table, + File > StrCat[ResDir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"C"], Color "LightGreen" ]; Print[ U, OnRegion Input3, Format Table, - File > StrCat[Dir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/32UC", Color "LightGreen" ]; + File > StrCat[ResDir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poV,"C"], Color "LightGreen" ]; EndIf - /*If(Flag_Cir && Flag_SrcType_Stator==0) + If(Flag_Cir && Flag_SrcType_StatorA==0) Print[ I, OnRegion R1, Format Table, - File > StrCat[Dir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IA", Color "Pink" ]; - Print[ I, OnRegion R2, Format Table, - File > StrCat[Dir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IB", Color "Yellow" ]; - Print[ I, OnRegion R3, Format Table, - File > StrCat[Dir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IC", Color "LightGreen" ]; + File > StrCat[ResDir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"A"], Color "Pink" ]; Print[ U, OnRegion R1, Format Table, - File > StrCat[Dir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/30UA", Color "Pink" ]; + File > StrCat[ResDir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poV,"A"], Color "Pink" ]; + EndIf + If(Flag_Cir && Flag_SrcType_StatorB==0) + Print[ I, OnRegion R2, Format Table, + File > StrCat[ResDir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"B"], Color "Yellow" ]; Print[ U, OnRegion R2, Format Table, - File > StrCat[Dir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/31UB", Color "Yellow" ]; + File > StrCat[ResDir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poV,"B"], Color "Yellow" ]; + EndIf + If(Flag_Cir && Flag_SrcType_StatorC==0) + Print[ I, OnRegion R3, Format Table, + File > StrCat[ResDir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"C"], Color "LightGreen" ]; Print[ U, OnRegion R3, Format Table, - File > StrCat[Dir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/32UC", Color "LightGreen" ]; - EndIf*/ - + File > StrCat[ResDir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poV,"C"], Color "LightGreen" ]; + EndIf Print[ I, OnRegion RotorC, Format Table, - File > StrCat[Dir, StrCat["Irotor",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2Ir", Color "LightYellow" ]; - - Print[ Torque_Maxwell[Rotor_Airgap], OnGlobal, Format TimeTable, - File > StrCat[Dir, StrCat["Tr",ExtGnuplot]], LastTimeStepOnly, Store 54, SendToServer my_output, Color "LightYellow" ]; - Print[ Torque_Maxwell[Stator_Airgap], OnGlobal, Format TimeTable, - File > StrCat[Dir, StrCat["Ts",ExtGnuplot]], LastTimeStepOnly, Store 55, SendToServer "Output/41T_stator", Color "LightYellow" ]; - Print[ Torque_Maxwell[MB], OnGlobal, Format TimeTable, - File > StrCat[Dir, StrCat["Tmb",ExtGnuplot]], LastTimeStepOnly, Store 56, SendToServer "Output/42T_mb", Color "LightYellow" ]; - //Print[ Torque_vw, OnRegion NodesOf[Rotor_Bnd_MB], Format RegionValue, - // File > StrCat[Dir, StrCat["Tr_vw",ExtGnuplot]], LastTimeStepOnly, Store 54, SendToServer "Output/1T_rotor_vw" ]; + File > StrCat[ResDir, StrCat["Irotor",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poI,"rotor"], Color "LightCyan" ]; If(Flag_SrcType_Stator) - Print[ Flux[PhaseA], OnGlobal, Format TimeTable, - File > StrCat[Dir, StrCat["Flux_a",ExtGnuplot]], LastTimeStepOnly, Store 11, SendToServer "Output/50Flux_a", Color "Pink" ]; - Print[ Flux[PhaseB], OnGlobal, Format TimeTable, - File > StrCat[Dir, StrCat["Flux_b",ExtGnuplot]], LastTimeStepOnly, Store 22, SendToServer "Output/51Flux_b", Color "Yellow" ]; - Print[ Flux[PhaseC], OnGlobal, Format TimeTable, - File > StrCat[Dir, StrCat["Flux_c",ExtGnuplot]], LastTimeStepOnly, Store 33, SendToServer "Output/52Flux_c", Color "LightGreen"]; - - If(Flag_ParkTransformation && Flag_SrcType_Stator) - Print[ Flux_d, OnRegion DomainDummy, Format TimeTable, - File > StrCat[Dir, StrCat["Flux_d",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/60Flux_d", Color "LightYellow" ]; - Print[ Flux_q, OnRegion DomainDummy, Format TimeTable, - File > StrCat[Dir, StrCat["Flux_q",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/61Flux_q", Color "LightYellow" ]; - Print[ Flux_0, OnRegion DomainDummy, Format TimeTable, - File > StrCat[Dir, StrCat["Flux_0",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/62Flux_0", Color "LightYellow" ]; - EndIf + Print[ Flux[PhaseA], OnGlobal, Format TimeTable, + File > StrCat[ResDir, StrCat["Flux_a",ExtGnuplot]], LastTimeStepOnly, Store 11, + SendToServer StrCat[poF,"A"], Color "Pink" ]; + If(NbrPhases==3) + Print[ Flux[PhaseB], OnGlobal, Format TimeTable, + File > StrCat[ResDir, StrCat["Flux_b",ExtGnuplot]], LastTimeStepOnly, Store 22, + SendToServer StrCat[poF,"B"], Color "Yellow" ]; + Print[ Flux[PhaseC], OnGlobal, Format TimeTable, + File > StrCat[ResDir, StrCat["Flux_c",ExtGnuplot]], LastTimeStepOnly, Store 33, + SendToServer StrCat[poF,"C"], Color "LightGreen"]; + EndIf + If(Flag_ParkTransformation && Flag_SrcType_Stator) + Print[ Flux_d, OnRegion DomainDummy, Format TimeTable, + File > StrCat[ResDir, StrCat["Flux_d",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poF,"d"], Color "LightYellow" ]; + Print[ Flux_q, OnRegion DomainDummy, Format TimeTable, + File > StrCat[ResDir, StrCat["Flux_q",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poF,"q"], Color "LightYellow" ]; + Print[ Flux_0, OnRegion DomainDummy, Format TimeTable, + File > StrCat[ResDir, StrCat["Flux_0",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poF,"0"], Color "LightYellow" ]; + EndIf EndIf -} - -PostOperation Joule_Losses UsingPost MagDyn_a_2D { Print[ JouleLosses[Rotor], OnGlobal, Format TimeTable, - File > StrCat[Dir, StrCat["P",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/3P_rotor" ]; + File > StrCat[ResDir, StrCat["JL",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poJL,"rotor"], Color "LightYellow" ]; Print[ JouleLosses[Rotor_Fe], OnGlobal, Format TimeTable, - File > StrCat[Dir, StrCat["P_Fe",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/3P_rotor_fe" ]; + File > StrCat[ResDir, StrCat["JL_Fe",ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[poJL,"rotor_fe"], Color "LightYellow" ]; +} + +PostOperation Get_Torque UsingPost MagStaDyn_a_2D { + Print[ Torque_Maxwell[Rotor_Airgap], OnGlobal, Format TimeTable, + File > StrCat[ResDir, StrCat["Tr",ExtGnuplot]], LastTimeStepOnly, Store 54, + SendToServer StrCat[po_mecT, "rotor"], Color "Ivory" ]; + Print[ Torque_Maxwell[Stator_Airgap], OnGlobal, Format TimeTable, + File > StrCat[ResDir, StrCat["Ts",ExtGnuplot]], LastTimeStepOnly, Store 55, + SendToServer StrCat[po_mecT, "stator"], Color "Ivory" ]; +} + +PostOperation Get_Torque_cplx UsingPost MagStaDyn_a_2D { + Print[ Torque_Maxwell_cplx[Rotor_Airgap], OnGlobal, Format TimeTable, + File > StrCat[ResDir, StrCat["Tr",ExtGnuplot]], Store 54, + SendToServer StrCat[po_mecT, "rotor"], Color "Ivory" ]; + Print[ Torque_Maxwell_cplx[Stator_Airgap], OnGlobal, Format TimeTable, + File > StrCat[ResDir, StrCat["Ts",ExtGnuplot]], Store 55, + SendToServer StrCat[po_mecT,"stator"], Color "Ivory" ]; } -/* PostOperation Mechanical UsingPost Mechanical { - Print[ P, OnRegion DomainKin, File > StrCat[Dir, StrCat["P", ExtGnuplot]], - Format Table, Store 77, LastTimeStepOnly, SendToServer "Output/3Position"] ; - Print[ V, OnRegion DomainKin, File > StrCat[Dir, StrCat["V", ExtGnuplot]], - Format Table, LastTimeStepOnly, SendToServer "Output/4Velocity"] ; + Print[ P, OnRegion DomainKin, Format Table, + File > StrCat[ResDir, StrCat["P", ExtGnuplot]], LastTimeStepOnly, Store 77, + SendToServer StrCat[po_mec,"11Position [rad]"], Color "Ivory"] ; + Print[ Pdeg, OnRegion DomainKin, Format Table, + File > StrCat[ResDir, StrCat["P_deg", ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[po_mec,"10Position [deg]"], Color "Ivory"] ; + Print[ V, OnRegion DomainKin, Format Table, + File > StrCat[ResDir, StrCat["V", ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[po_mec,"21Velocity [rad\s]"], Color "Ivory"] ;//MediumPurple1 + Print[ Vrpm, OnRegion DomainKin, Format Table, + File > StrCat[ResDir, StrCat["Vrpm", ExtGnuplot]], LastTimeStepOnly, + SendToServer StrCat[po_mec,"20Velocity [rpm]"], Color "Ivory"] ;//MediumPurple1 } -*/ + +If (Flag_ParkTransformation) +PostOperation ThetaPark_IABC UsingPost MagStaDyn_a_2D { + Print[ RotorPosition_deg, OnRegion DomainDummy, Format Table, LastTimeStepOnly, + File StrCat[ResDir, StrCat["temp",ExtGnuplot]], + SendToServer StrCat[po,"10Rotor position"], Color "LightYellow" ]; + Print[ Theta_Park_deg, OnRegion DomainDummy, Format Table, LastTimeStepOnly, + File StrCat[ResDir, StrCat["temp",ExtGnuplot]], + SendToServer StrCat[po,"11Theta park"], Color "LightYellow" ]; + Print[ IA, OnRegion DomainDummy, Format Table, LastTimeStepOnly, + File StrCat[ResDir, StrCat["temp",ExtGnuplot]], + SendToServer StrCat[poI,"A"], Color "Pink" ]; + Print[ IB, OnRegion DomainDummy, Format Table, LastTimeStepOnly, + File StrCat[ResDir, StrCat["temp",ExtGnuplot]], + SendToServer StrCat[poI,"B"], Color "Yellow" ]; + Print[ IC, OnRegion DomainDummy, Format Table, LastTimeStepOnly, + File StrCat[ResDir, StrCat["temp",ExtGnuplot]], + SendToServer StrCat[poI,"C"], Color "LightGreen" ]; +} +EndIf diff --git a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm.geo b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm.geo index efade112ec..076d49ab2f 100644 --- a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm.geo +++ b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm.geo @@ -1,9 +1,11 @@ Include "pmsm_data.geo"; -Mesh.Algorithm = 1; +Mesh.Algorithm = 6; // 2D mesh algorithm (1=MeshAdapt, 2=Automatic, 5=Delaunay, 6=Frontal, 7=bamg, 8=delquad) + Geometry.CopyMeshingMethod = 1; +//Mesh.CharacteristicLengthFactor = 0.5 ; -Mesh.CharacteristicLengthFactor = 1.5 ; +fact_trans = Mesh.CharacteristicLengthFactor ; // Mesh characteristic lengths @@ -15,7 +17,7 @@ pS1=(rS7-rS1)/7.*s; pS2=(rS7-rS1)/12.*s; pS3=(rS6-rS3)/10.*s; -NbrDivMB = 2*Ceil[2*Pi*rRext/8/pR1]; //1/8 Moving band +NbrDivMB = 2*Ceil[2*Pi*rRext/8/pR1/fact_trans] ; //1/8 Moving band //-------------------------------------------------------------------------------- //-------------------------------------------------------------------------------- @@ -29,7 +31,7 @@ Include "pmsm_stator.geo"; // For nice visualisation... -Mesh.Light = 0 ; +//Mesh.Light = 0 ; //Mesh.SurfaceFaces = 1; Mesh.SurfaceEdges=0; Hide { Point{ Point '*' }; } @@ -39,13 +41,12 @@ Show { Line{ nicepos_rotor[], nicepos_stator[] }; } Physical Line(NICEPOS) = { nicepos_rotor[], nicepos_stator[] }; //For post-processing... -View[0].Light = 0; +//View[0].Light = 0; View[0].NbIso = 25; // Number of intervals View[0].IntervalsType = 1; DefineConstant[ Flag_AddInfo = {0, Choices{0,1}, - Label "Add info about phases and axis", - Path "Input/1"} ]; + Name "Input/02Add info about phases and axis"} ]; For i In {PostProcessing.NbViews-1 : 0 : -1} If(StrFind(View[i].Attributes, "tmp")) @@ -55,7 +56,7 @@ EndFor If(Flag_AddInfo) rr = 1.25 * rS3 ; - For k In {0:NbrPoles-1} + For k In {0:NbrPolesInModel-1} xa[] += rr*Cos(1*Pi/24+k*Pi/4) ; ya[] += rr*Sin(1*Pi/24+k*Pi/4) ; xb[] += rr*Cos(3*Pi/24+k*Pi/4) ; yb[] += rr*Sin(3*Pi/24+k*Pi/4) ; xc[] += rr*Cos(5*Pi/24+k*Pi/4) ; yc[] += rr*Sin(5*Pi/24+k*Pi/4) ; diff --git a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm.pro b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm.pro index b9ee5ce16a..e54ac84457 100644 --- a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm.pro +++ b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm.pro @@ -4,26 +4,22 @@ Include "pmsm_data.geo"; -DefineConstant[ Flag_NL = {0, - Choices{ 0="Linear", - 1="Nonlinear BH curve"}, - Label "Fe magnetic law", - Path "Input/3", Highlight "Blue"} ] ; - -DefineConstant[ Flag_SrcType_Stator = {1, - Choices{ 0="None", - 1="Current" }, - Label "Source Type in Stator", - Path "Input/4", Highlight "Blue", Visible 1} ] ; - -DefineConstant[ Flag_SrcType_Rotor = {0, - Choices{ 0="None", - 1="Current" }, - Label "Source Type in Rotor", - Path "Input/5", Highlight "Blue", Visible 0} ] ; - -DefineConstant[ Flag_Cir = {!Flag_SrcType_Stator, Choices{0,1}, - Label "Use circuit in Stator", ReadOnly 1, Visible 0} ] ; +DefineConstant[ + Flag_AnalysisType = {1, Choices{0="Static", 1="Time domain"}, + Name "Input/19Type of analysis", Highlight "Blue", + Help Str["- Use 'Static' to compute static fields created in the machine", + "- Use 'Time domain' to compute the dynamic response of the machine"]} , + Flag_SrcType_Stator = { 0, Choices{0="None",1="Current"}, + Name "Input/41Source type in stator", Highlight "Blue"}, + Flag_NL = { 1, Choices{0,1}, + Name "Input/60Nonlinear BH-curve"}, + Flag_NL_law_Type = { 0, Choices{ + 0="Analytical", 1="Interpolated", + 2="Analytical VH800-65D", 3="Interpolated VH800-65D"}, + Name "Input/61BH-curve", Highlight "Blue", Visible Flag_NL} +]; + +Flag_Cir = !Flag_SrcType_Stator ; Group { Stator_Fe = #STATOR_FE ; @@ -31,23 +27,15 @@ Group { Stator_Cu = #{}; Stator_Air = #STATOR_AIR ; Stator_Airgap = #STATOR_AIRGAP ; - Stator_Bnd_A0 = #STATOR_BND_A0 ; Stator_Bnd_A1 = #STATOR_BND_A1 ; Rotor_Fe = #ROTOR_FE ; Rotor_Al = #{}; Rotor_Cu = #{}; - Stator_Air = #STATOR_AIR ; - Stator_Airgap = #STATOR_AIRGAP ; - Stator_Bnd_MB = #STATOR_BND_MOVING_BAND ; - Stator_Bnd_A0 = #STATOR_BND_A0 ; - Stator_Bnd_A1 = #STATOR_BND_A1 ; - Rotor_Fe = #ROTOR_FE ; Rotor_Air = #ROTOR_AIR ; Rotor_Airgap = #ROTOR_AIRGAP ; - Rotor_Bnd_A0 = #ROTOR_BND_A0 ; Rotor_Bnd_A1 = #ROTOR_BND_A1 ; @@ -65,13 +53,14 @@ Group { Rotor_Magnets += Region[ Rotor_Magnet~{k} ]; EndFor - nbInds = (Flag_Symmetry) ? NbrPoles*NbrSectTotStator/NbrPolesTot : NbrSectTotStator ; - Printf("NbrPoles=%g, nbInds=%g SymmetryFactor=%g", NbrPoles, nbInds, SymmetryFactor); + nbInds = (Flag_Symmetry) ? NbrPolesInModel*NbrSectTotStator/NbrPolesTot : NbrSectTotStator ; + Printf("NbrPolesInModel=%g, nbInds=%g SymmetryFactor=%g", + NbrPolesInModel, nbInds, SymmetryFactor); Stator_Ind_Ap = #{}; Stator_Ind_Am = #{STATOR_IND_AM}; Stator_Ind_Bp = #{}; Stator_Ind_Bm = #{STATOR_IND_BM}; Stator_Ind_Cp = #{STATOR_IND_CP}; Stator_Ind_Cm = #{}; - If(NbrPoles > 1) + If(NbrPolesInModel > 1) Stator_Ind_Ap += #STATOR_IND_AP; Stator_Ind_Bp += #STATOR_IND_BP; Stator_Ind_Cm += #STATOR_IND_CM; @@ -81,7 +70,7 @@ Group { PhaseB = Region[{ Stator_Ind_Bp, Stator_Ind_Bm }]; PhaseC = Region[{ Stator_Ind_Cp, Stator_Ind_Cm }]; - // Provisional: Just one physical region for nice graph in Onelab + // FIXME: Just one physical region for nice graph in Onelab PhaseA_pos = Region[{ Stator_Ind_Am }]; PhaseB_pos = Region[{ Stator_Ind_Bm }]; PhaseC_pos = Region[{ Stator_Ind_Cp }]; @@ -112,20 +101,13 @@ Group { Function { - mur_fe = 1000 ; - sigma_fe = 0 ; - NbrPhases = 3 ; - NbrPolePairs = NbrPolesTot/2 ; - DefineConstant[ b_remanent = { 1.2, Label "Remanent induction", Path "Input/3", Highlight "AliceBlue"} ] ; // For a radial remanent b For k In {1:nbMagnets} br[ Rotor_Magnet~{k} ] = (-1)^(k-1) * b_remanent * Vector[ Cos[Atan2[Y[],X[]]], Sin[Atan2[Y[],X[]]], 0 ]; EndFor - Inominal = 3.9 ; // Nominal current - Tnominal = 2.5 ; // Nominal torque //Data for modeling a stranded inductor NbWires[] = 104 ; // Number of wires per slot @@ -136,37 +118,42 @@ Function { FillFactor_Winding = 0.5 ; // percentage of Cu in the surface coil side, smaller than 1 Factor_R_3DEffects = 1.5 ; // bigger than Adding 50% of resistance - DefineConstant[ rpm = { 500, - Label "speed in rpm", - Path "Input/7", Highlight "AliceBlue"} ]; // speed in rpm + DefineConstant[ rpm = { rpm_nominal, + Name "Input/7speed in rpm", + Highlight "AliceBlue", Visible (Flag_AnalysisType==1)} ]; // speed in rpm wr = rpm/60*2*Pi ; // speed in rad_mec/s // supply at fixed position - DefineConstant[ Freq = {wr*NbrPolePairs/(2*Pi), ReadOnly 1, - Path "Output/1", Highlight "LightYellow" } ]; + DefineConstant[ Freq = { wr*NbrPolePairs/(2*Pi), ReadOnly 1, + Name "Output/1Freq", Highlight "LightYellow" } ]; Omega = 2*Pi*Freq ; T = 1/Freq ; - DefineConstant[ thetaMax_deg = { 180, Label "End rotor angle (loop)", - Path "Input/21", Highlight "AliceBlue" } ]; + DefineConstant[ + thetaMax_deg = { 180, Name "Input/21End rotor angle (loop)", + Highlight "AliceBlue", Visible (Flag_AnalysisType==1) } + ]; theta0 = InitialRotorAngle + 0. ; thetaMax = thetaMax_deg * deg2rad ; // end rotor angle (used in doing a loop) - DefineConstant[ NbTurns = { (thetaMax-theta0)/(2*Pi), Label "Number of revolutions", - Path "Input/24", Highlight "LightGrey", ReadOnly 1} ]; + DefineConstant[ + NbTurns = { (thetaMax-theta0)/(2*Pi), Name "Input/24Number of revolutions", + Highlight "LightGrey", ReadOnly 1, Visible (Flag_AnalysisType==1)}, + delta_theta_deg = { 1., Name "Input/22Step [deg]", + Highlight "AliceBlue", Visible (Flag_AnalysisType==1)} + ]; - DefineConstant[ delta_theta_deg = { 1., Label "step in degrees", - Path "Input/22", Highlight "AliceBlue"} ]; - - delta_theta = delta_theta_deg * deg2rad ; + delta_theta[] = delta_theta_deg * deg2rad ; time0 = 0 ; // at initial rotor position - delta_time = delta_theta/wr; + delta_time = delta_theta_deg * deg2rad/wr; timemax = thetaMax/wr; - DefineConstant[ NbSteps = { Ceil[(timemax-time0)/delta_time], Label "Number of steps", - Path "Input/23", Highlight "LightGrey", ReadOnly 1} ]; + DefineConstant[ + NbSteps = { Ceil[(timemax-time0)/delta_time], Name "Input/23Number of steps", + Highlight "LightGrey", ReadOnly 1, Visible (Flag_AnalysisType==1)} + ]; RotorPosition[] = InitialRotorAngle + $Time * wr ; RotorPosition_deg[] = RotorPosition[]*180/Pi; @@ -175,30 +162,20 @@ Function { Theta_Park[] = ((RotorPosition[] + Pi/8) - Pi/6) * NbrPolePairs; // electrical degrees Theta_Park_deg[] = Theta_Park[]*180/Pi; - DefineConstant[ ID = { 0, Path "Input/60", Label "Id stator current", Highlight "AliceBlue"}, - IQ = { Inominal, Path "Input/61", Label "Iq stator current", Highlight "AliceBlue"}, - I0 = { 0, Visible 0} ] ; - - If(Flag_SrcType_Stator==0) - UndefineConstant["Input/60ID"]; - UndefineConstant["Input/61IQ"]; - EndIf + DefineConstant[ + ID = { 0, Name "Input/50Id stator current", + Highlight "AliceBlue", Visible (Flag_SrcType_Stator==1)}, + IQ = { Inominal, Name "Input/51Iq stator current", + Highlight "AliceBlue", Visible (Flag_SrcType_Stator==1)} + ] ; } // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- -Dir="res/"; -ExtGmsh = ".pos"; -ExtGnuplot = ".dat"; - -// -------------------------------------------------------------------------- -// -------------------------------------------------------------------------- -// -------------------------------------------------------------------------- - -If(Flag_SrcType_Stator==1) - UndefineConstant["Input/ZR"]; +If(Flag_SrcType_Stator) + UndefineConstant["Input/8Load resistance"]; EndIf If(Flag_Cir) @@ -206,6 +183,3 @@ If(Flag_Cir) EndIf Include "machine_magstadyn_a.pro" ; -DefineConstant[ ResolutionChoices = {"TimeDomain_Loop", Path "GetDP/1"} ]; -DefineConstant[ PostOperationChoices = {"Map_LocalFields", Path "GetDP/2"} ]; -DefineConstant[ ComputeCommand = {"-solve -v 1 -v2", Path "GetDP/9"} ]; diff --git a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_8p_circuit.pro b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_8p_circuit.pro index 37e1ac3756..fa1b32fafb 100644 --- a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_8p_circuit.pro +++ b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_8p_circuit.pro @@ -1,9 +1,8 @@ // -// Circuit for Permanent Magnet Synchronous Generator - cbmag +// Circuit for Permanent Magnet Synchronous Generator // Group{ - // Dummy numbers for circuit definition R1 = #55551 ; R2 = #55552 ; R3 = #55553 ; @@ -21,7 +20,7 @@ Group{ DomainSource_Cir += Region[ {Input1, Input2, Input3} ] ; EndIf - DomainZt_Cir = Region[ {DomainZ_Cir, DomainSource_Cir} ]; + DomainZt_Cir = Region[ {DomainZ_Cir, DomainSource_Cir} ]; } // -------------------------------------------------------------------------- @@ -29,8 +28,8 @@ Group{ Function { // Open circuit - load - short circuit - DefineConstant[ ZR = {200, - Choices{1e-8, 200, 1e8}, Label "Load resistance", Path "Input/", Highlight "AliceBlue"} ]; + DefineConstant[ ZR = {200, Choices{1e-8, 200, 1e8}, + Name "Input/8Load resistance", Highlight "AliceBlue"} ]; Resistance[#{R1, R2, R3}] = ZR ; } diff --git a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_data.geo b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_data.geo index c2760986cf..f7545f84c4 100644 --- a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_data.geo +++ b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_data.geo @@ -6,40 +6,44 @@ mm = 1e-3 ; deg2rad = Pi/180 ; -DefineConstant[ NbrPoles = { 1, Choices {1="1", - 2="2", - 4="4", - 8="8"}, - Label "Number of poles in FE model", - Path "Input/1", Highlight "Blue", Visible 1} ] ; +pp = "Input/Constructive parameters/"; -DefineConstant[ InitialRotorAngle_deg = {7.5, Label "Start rotor angle", Path "Input/20", Highlight "AliceBlue"} ]; +DefineConstant[ + NbrPolesInModel = { 1, Choices {1="1", 2="2", 4="4", 8="8"}, + Name "Input/20Number of poles in FE model", + Highlight "Blue", Visible 1}, + InitialRotorAngle_deg = {7.5, + Name "Input/21Start rotor angle [deg]", + Highlight "AliceBlue"} +] ; //-------------------------------------------------------------------------------- InitialRotorAngle = InitialRotorAngle_deg*deg2rad ; // initial rotor angle, 0 if aligned -AxialLength = 35*mm ; - //------------------------------------------------ //------------------------------------------------ NbrPolesTot = 8 ; // number of poles in complete cross-section +NbrPolePairs = NbrPolesTot/2 ; -SymmetryFactor = NbrPolesTot/NbrPoles ; +SymmetryFactor = NbrPolesTot/NbrPolesInModel ; Flag_Symmetry = (SymmetryFactor==1)?0:1 ; NbrSectTot = NbrPolesTot ; // number of "rotor teeth" -NbrSect = NbrSectTot*NbrPoles/NbrPolesTot ; // number of "rotor teeth" in FE model +NbrSect = NbrSectTot*NbrPolesInModel/NbrPolesTot ; // number of "rotor teeth" in FE model //-------------------------------------------------------------------------------- //------------------------------------------------ // Stator //------------------------------------------------ NbrSectTotStator = 24; // number of stator teeth -NbrSectStator = NbrSectTotStator*NbrPoles/NbrPolesTot; // number of stator teeth in FE model +NbrSectStator = NbrSectTotStator*NbrPolesInModel/NbrPolesTot; // number of stator teeth in FE model //-------------------------------------------------------------------------------- -lm = 2.352*mm ; // magnet height +DefineConstant[ + lm = {2.352*mm , Name StrCat[pp, "Magnet height [m]"], Closed 0} +]; + Th_magnet = 32.67 *deg2rad ; // angle in degrees 0 < Th_magnet < 45 //-------------------------------------------------------------------------------- @@ -51,15 +55,19 @@ rR3 = (rRext-0.7389*lm); //23.862e-03; rR4 = (rRext-0.72278*lm); //23.9e-03; rR5 = rRext; //25.6e-03; -rS1 = 26.02*mm; -rS2 = 26.62*mm; -rS3 = 26.96*mm; -rS4 = 38.16*mm; -rS5 = 38.27*mm; -rS6 = 40.02*mm; -rS7 = 46.00*mm; +//Gap = rS1-rR5; +DefineConstant[ + AxialLength = {35*mm, Name StrCat[pp, "Axial length [m]"], Closed 1}, + Gap = {(26.02-25.6)*mm, Name StrCat[pp, "Airgap width [m]"], Closed 0} +]; -Gap = rS1-rR5; +rS1 = rR5 + Gap; //rS1 = 26.02*mm; +rS2 = rS1 + 0.6*mm; //rS2 = 26.62*mm; +rS3 = rS2 + 0.34*mm; //rS3 = 26.96*mm; +rS4 = rS3 + 11.2*mm; //rS4 = 38.16*mm; +rS5 = rS4 + 0.11*mm; //rS5 = 38.27*mm; +rS6 = rS5 + 1.75*mm; //rS6 = 40.02*mm; +rS7 = rS6 + 5.98*mm; //rS7 = 46.00*mm; rB1 = rR5+Gap/3; rB1b = rB1; @@ -69,6 +77,16 @@ rB2 = rR5+Gap*2/3; A0 = 45 * deg2rad ; // with this choice, axis A of stator is at 30 degrees with regard to horizontal axis A1 = 0 * deg2rad ; // Rotor initial aligned position, current position in angRot +sigma_fe = 0. ; // laminated steel +DefineConstant[ + mur_fe = {1000, Name StrCat[pp, "Relative permeability for linear case"]}, + b_remanent = {1.2, Name StrCat[pp, "Remanent induction [T]"] } +]; + +rpm_nominal = 500 ; +Inominal = 3.9 ; // Nominal current +Tnominal = 2.5 ; // Nominal torque + // ---------------------------------------------------- // Numbers for physical regions in .geo and .pro files // ---------------------------------------------------- diff --git a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_rotor.geo b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_rotor.geo index c051cf1a6d..2280f90967 100644 --- a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_rotor.geo +++ b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_rotor.geo @@ -14,10 +14,11 @@ For k In {0:#pntR[]-2} linR0[]+=newl; Line(newl) = {pntR[k], pntR[k+1]}; EndFor -Transfinite Line{linR0[0]} = Ceil[(rR2-rR1)/pR1] ; -Transfinite Line{linR0[1]} = Ceil[(rR4-rR2)/pR1] ; -Transfinite Line{linR0[2]} = Ceil[(rR5-rR4)/pR1] ; -Transfinite Line{linR0[3]} = Ceil[(rB1-rR5)/pR1] ; +Transfinite Line{linR0[0]} = Ceil[(rR2-rR1)/pR1/fact_trans] ; +Transfinite Line{linR0[1]} = Ceil[(rR4-rR2)/pR1/fact_trans] ; +Transfinite Line{linR0[2]} = Ceil[(rR5-rR4)/pR1/fact_trans] ; +Transfinite Line{linR0[3]} = Ceil[(rB1-rR5)/pR1/fact_trans] ; + For k In {0:#linR0[]-1} linR1[] += Rotate {{0, 0, 1}, {0, 0, 0}, A0+A1} { Duplicata{Line{linR0[k]};} }; @@ -67,9 +68,9 @@ smagnet[0]=news; Plane Surface(smagnet[0]) = {newll-1}; nn = #cirR[]-1 ; Line Loop(newll) = {cirR[{nn-5}], linR2[1], -cirR[{nn-3}], -linR0[2]}; -sairrotor[]+=news; Plane Surface(news) = {newll-1}; +sairrotor[]+=news; Plane Surface(news) = -{newll-1}; Line Loop(newll) = {cirR[{nn-4}], linR1[2], -cirR[{nn-1}], -linR3[1]}; -sairrotor[]+=news; Plane Surface(news) = {newll-1}; +sairrotor[]+=news; Plane Surface(news) = -{newll-1}; Line Loop(newll) = {linR0[3], cirR[nn], -linR1[3], -cirR[{nn-1:nn-3:-1}]}; sairrotormb[]+=news; Plane Surface(news) = {newll-1}; @@ -98,10 +99,10 @@ If(SymmetryFactor<8) linR1[] = linR1_[]; EndIf - For k In {1:NbrPoles-1} + For k In {1:NbrPolesInModel-1} surfint[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Line{surfint[{0:2}]};} }; EndFor - For k In {1:NbrPoles-1} + For k In {1:NbrPolesInModel-1} srotor[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{srotor[0]};} }; smagnet[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{smagnet[0]};} }; sairrotor[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairrotor[{0,1}]};} }; @@ -118,7 +119,7 @@ Physical Surface(ROTOR_FE) = {srotor[]}; // Rotor Physical Surface(ROTOR_AIR) = {sairrotor[]}; // AirRotor Physical Surface(ROTOR_AIRGAP) = {sairrotormb[]};// AirRotor for possible torque computation with Maxwell stress tensor -NN = (Flag_Symmetry)?NbrPoles:NbrPolesTot; +NN = (Flag_Symmetry)?NbrPolesInModel:NbrPolesTot; For k In {0:NN-1} Physical Surface(ROTOR_MAGNET+k) = {smagnet[k]}; // Magnets EndFor diff --git a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_stator.geo b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_stator.geo index e928a4a055..f005f48bb4 100644 --- a/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_stator.geo +++ b/contrib/mobile/iOS/Onelab/files/pmsm/pmsm_stator.geo @@ -5,8 +5,10 @@ pntG[]+=newp; Point(newp) = {rB2, 0., 0., pS1}; // aligned with the stator circ[] = Extrude {{0, 0, 1}, {0, 0, 0}, A0} { Point{pntG[0]}; }; pntG[]+=circ[0]; lineMBstator[]=circ[1]; + Transfinite Line{lineMBstator[0]} = NbrDivMB+1 ; + //Filling the gap for the whole 2*Pi For k In {1:NbrPolesTot-1} lineMBstatoraux[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*A0} { Duplicata{Line{lineMBstator[0]};} }; @@ -111,7 +113,7 @@ Line Loop(newll) = { cSlot[0], linesslot0[], cSlot[1], linesslot1[], cSlot[2], linesslot2[], cSlot[3], linS[3], -cirS[0], -linS[2]}; -sstator[0]=news; Plane Surface(sstator[0]) = {newll-1}; +sstator[0]=news; Plane Surface(sstator[0]) = -{newll-1}; // ------------------------------------------------------------------------------- // ------------------------------------------------------------------------------- @@ -129,10 +131,10 @@ If(SymmetryFactor<8) auxlink[] = auxlink_[]; EndIf - For k In {1:NbrPoles-1} + For k In {1:NbrPolesInModel-1} cirS[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Line{cirS[{0}]};} }; EndFor - For k In {1:NbrPoles-1} + For k In {1:NbrPolesInModel-1} sstator[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sstator[0]};} }; sairgapS[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairgapS[0]};} }; sairslot[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairslot[{0:2}]};} }; diff --git a/contrib/onelab/python/coin.geo b/contrib/onelab/python/coin.geo index a65e52858d..9a86730c05 100644 --- a/contrib/onelab/python/coin.geo +++ b/contrib/onelab/python/coin.geo @@ -1,7 +1,6 @@ -DefineConstant[ refine = {0.1, - Path "Parameters/Geometry", - Label "Refinement at corner"} ] ; +DefineConstant[ refine = {0.1, + Name "Parameters/Geometry/Refinement at corner"} ] ; lc = 0.1; diff --git a/demos/indheat.geo b/demos/indheat.geo index b13cc79aeb..4b8e100d34 100644 --- a/demos/indheat.geo +++ b/demos/indheat.geo @@ -3,18 +3,18 @@ nn = 40; // mesh subdivisions per turn DefineConstant [ - turns = {5, Label "Number of coil turns", Path "Parameters"}, - r = {0.11, Label "Coil radius", Path "Parameters"}, - rc = {0.01, Label "Coil wire radius", Path "Parameters"}, - hc = {0.25, Label "Coil height", Path "Parameters"}, - ht = {0.4, Label "Tube height", Path "Parameters"}, - rt1 = {0.075, Label "Tube internal radius", Path "Parameters"}, - rt2 = {0.092, Label "Tube external radius", Path "Parameters"}, - lb = {1, Label "Infinite box width", Path "Parameters"}, - left = {1, Choices{0,1}, Label "Terminals on the left?", Path "Parameters"} - macro = {"title.script", Label "Add title", Path "Macros", + turns = {5, Name "Parameters/Number of coil turns"}, + r = {0.11, Name "Parameters/Coil radius"}, + rc = {0.01, Name "Parameters/Coil wire radius"}, + hc = {0.25, Name "Parameters/Coil height"}, + ht = {0.4, Name "Parameters/Tube height"}, + rt1 = {0.075, Name "Parameters/Tube internal radius"}, + rt2 = {0.092, Name "Parameters/Tube external radius"}, + lb = {1, Name "Parameters/Infinite box width"}, + left = {1, Choices{0,1}, Name "Parameters/Terminals on the left?"} + macro = {"title.script", Name "Macros/Add title", Macro "Gmsh", AutoCheck 0 /*, Highlight "Turquoise"*/ }, - showLines = {Geometry.Lines, Choices {0,1}, Label "Show lines?", Path "Options", + showLines = {Geometry.Lines, Choices {0,1}, Name "Options/Show lines?", GmshOption "Geometry.Lines", AutoCheck 0} ]; diff --git a/tutorial/t3.geo b/tutorial/t3.geo index d5ba04f2b4..521d861021 100644 --- a/tutorial/t3.geo +++ b/tutorial/t3.geo @@ -40,7 +40,7 @@ Extrude { {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { // can be exchanged with other codes using the ONELAB framework: DefineConstant[ angle = {90, Min 0, Max 120, Step 1, - Label "Twisting angle", Path "Parameters"} ]; + Name "Parameters/Twisting angle"} ]; out[] = Extrude { {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , angle * Pi / 180 } { Surface{144}; Layers{10}; Recombine; diff --git a/utils/api_demos/simpleBeam.geo b/utils/api_demos/simpleBeam.geo index 061780a020..3b2d47854a 100644 --- a/utils/api_demos/simpleBeam.geo +++ b/utils/api_demos/simpleBeam.geo @@ -3,12 +3,12 @@ Mesh.Algorithm = 8; unit = 1.0e-02 ; -DefineConstant[ H = {4.5 * unit, Min 1 *unit, Max 8.5 *unit, Step 1*unit, Path "Parameters/Geometry", - ShortHelp "Beam Height"} ] ; -DefineConstant[ L = {20 * unit, Min 10 *unit, Max 200 *unit, Step 1*unit, Path "Parameters/Geometry", - ShortHelp "Beam Width"} ] ; -DefineConstant[ lc = {2 * unit, Min .1 *unit, Max 10 *unit, Step .1*unit, Path "Parameters/Geometry", - ShortHelp "Mesh Size"} ] ; +DefineConstant[ H = {4.5 * unit, Min 1 *unit, Max 8.5 *unit, Step 1*unit, + Name "Parameters/Geometry/Beam Height"} ] ; +DefineConstant[ L = {20 * unit, Min 10 *unit, Max 200 *unit, Step 1*unit, + Name "Parameters/Geometry/Beam Width"} ] ; +DefineConstant[ lc = {2 * unit, Min .1 *unit, Max 10 *unit, Step .1*unit, + Name "Parameters/Geometry/Mesh Size"} ] ; Point(1) = {0, 0, 0, lc}; Point(2) = {H, 0, 0, lc}; -- GitLab