summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bin/dhcp4/ctrl_dhcp4_srv.cc2
-rw-r--r--src/bin/dhcp4/dhcp4_lexer.cc1468
-rw-r--r--src/bin/dhcp4/dhcp4_lexer.ll10
-rw-r--r--src/bin/dhcp4/dhcp4_parser.cc178
-rw-r--r--src/bin/dhcp4/dhcp4_parser.h8
-rw-r--r--src/bin/dhcp4/dhcp4_parser.yy12
-rw-r--r--src/bin/dhcp4/json_config_parser.cc8
-rw-r--r--src/bin/dhcp4/parser_context.cc4
-rw-r--r--src/bin/dhcp4/parser_context.h4
-rw-r--r--src/bin/dhcp4/tests/config_parser_unittest.cc121
-rw-r--r--src/bin/dhcp6/ctrl_dhcp6_srv.cc6
-rw-r--r--src/bin/dhcp6/dhcp6_lexer.cc1416
-rw-r--r--src/bin/dhcp6/dhcp6_lexer.ll6
-rw-r--r--src/bin/dhcp6/dhcp6_parser.cc8
-rw-r--r--src/bin/dhcp6/dhcp6_parser.h8
-rw-r--r--src/bin/dhcp6/dhcp6_parser.yy10
-rw-r--r--src/bin/dhcp6/json_config_parser.cc8
-rw-r--r--src/bin/dhcp6/parser_context.cc4
-rw-r--r--src/bin/dhcp6/parser_context.h4
-rw-r--r--src/bin/dhcp6/tests/config_parser_unittest.cc115
-rw-r--r--src/lib/dhcp/Makefile.am8
-rw-r--r--src/lib/dhcp/iface_mgr.cc138
-rw-r--r--src/lib/dhcp/iface_mgr.h6
-rw-r--r--src/lib/dhcp/packet_queue.h55
-rw-r--r--src/lib/dhcp/packet_queue_mgr.h2
-rw-r--r--src/lib/dhcp/packet_queue_mgr4.cc4
-rw-r--r--src/lib/dhcp/packet_queue_mgr6.cc2
-rw-r--r--src/lib/dhcp/socket_info.h2
-rw-r--r--src/lib/dhcp/tests/packet_queue4_unittest.cc19
-rw-r--r--src/lib/dhcp/tests/packet_queue6_unittest.cc19
-rw-r--r--src/lib/dhcp/tests/packet_queue_mgr4_unittest.cc39
-rw-r--r--src/lib/dhcp/tests/packet_queue_mgr6_unittest.cc33
-rw-r--r--src/lib/dhcpsrv/Makefile.am11
-rw-r--r--src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.cc (renamed from src/lib/dhcpsrv/parsers/queue_control_parser.cc)16
-rw-r--r--src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.h (renamed from src/lib/dhcpsrv/parsers/queue_control_parser.h)18
-rw-r--r--src/lib/dhcpsrv/srv_config.cc8
-rw-r--r--src/lib/dhcpsrv/srv_config.h20
37 files changed, 1972 insertions, 1828 deletions
diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc
index a6b911528a..20b78029b7 100644
--- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc
+++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc
@@ -637,7 +637,7 @@ ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config) {
// Configure packet queue
try {
data::ConstElementPtr qc;
- qc = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
+ qc = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl();
if (!qc) {
// @todo For now we're manually constructing default queue config
// This probably needs to be built into the PQM?
diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc
index 95082ef4fd..afa86bf449 100644
--- a/src/bin/dhcp4/dhcp4_lexer.cc
+++ b/src/bin/dhcp4/dhcp4_lexer.cc
@@ -700,7 +700,7 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[1466] =
+static const flex_int16_t yy_accept[1468] =
{ 0,
168, 168, 0, 0, 0, 0, 0, 0, 0, 0,
176, 174, 10, 11, 174, 1, 168, 165, 168, 168,
@@ -732,137 +732,137 @@ static const flex_int16_t yy_accept[1466] =
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, 0, 173, 171, 0, 170,
- 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 173, 171, 0, 170, 169,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 138, 0, 137, 0, 0, 73, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,
+ 138, 0, 137, 0, 0, 73, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 34, 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, 70, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 70, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 17, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
+ 0, 0, 0, 0, 172, 169, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 139, 0, 0, 141,
+ 0, 0, 0, 0, 0, 0, 0, 74, 0, 0,
+ 0, 0, 0, 0, 59, 0, 0, 0, 0, 0,
+ 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 37, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 62, 0, 38, 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, 18, 0, 0, 0, 0, 172, 169, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 139, 0,
- 0, 141, 0, 0, 0, 0, 0, 0, 0, 74,
- 0, 0, 0, 0, 0, 0, 59, 0, 0, 0,
- 0, 0, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
+ 0, 88, 30, 0, 0, 35, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 146, 0, 143, 0, 142,
+ 0, 0, 0, 101, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 58, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 62, 0, 38, 0, 0,
+ 0, 0, 0, 0, 0, 81, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 102, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 88, 30, 0, 0, 35, 0,
- 0, 0, 0, 0, 0, 0, 0, 12, 146, 0,
- 143, 0, 142, 0, 0, 0, 101, 0, 0, 0,
+ 0, 0, 0, 97, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 144, 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, 81, 0, 0,
+ 0, 0, 0, 0, 72, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 83, 0, 0, 0, 0, 0, 0,
+ 0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 32, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 61, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 102, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 65, 0,
- 0, 0, 0, 0, 0, 0, 97, 0, 0, 0,
- 0, 0, 0, 0, 7, 0, 0, 144, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 76, 0, 0, 0, 0, 0, 0, 0, 0, 64,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 72, 0, 0, 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, 83, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 0, 0, 0, 0, 0,
+ 0, 0, 107, 77, 0, 0, 0, 0, 82, 31,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 39, 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, 54, 0, 0,
- 0, 65, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 76, 0, 0, 0, 0, 0, 0,
- 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 95,
+ 0, 0, 0, 0, 0, 0, 0, 147, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 107, 77, 0, 0, 0, 0,
- 82, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 69, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 96, 0,
+ 0, 0, 0, 0, 42, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 36, 0, 0, 0, 29, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 84, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 93, 0, 0, 0, 0,
+ 0, 0, 0, 0, 120, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 0, 0, 0, 0, 0, 42, 0, 0, 0,
+ 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 36, 0, 0, 0, 0,
- 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 84, 0,
+ 0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 125, 0, 0, 123,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 151, 0, 0, 0, 0, 0, 0, 94,
+ 0, 0, 0, 0, 0, 0, 98, 80, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 93, 0,
- 0, 0, 0, 0, 0, 0, 0, 120, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 23, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 125,
- 0, 0, 123, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 151, 0, 0, 0, 0,
- 0, 0, 94, 0, 0, 0, 0, 0, 0, 98,
-
- 80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 92, 22, 0, 103, 0,
- 0, 0, 0, 0, 0, 0, 0, 129, 0, 0,
- 0, 0, 56, 0, 0, 0, 0, 0, 106, 33,
+ 0, 0, 0, 92, 22, 0, 103, 0, 0, 0,
+ 0, 0, 0, 0, 0, 129, 0, 0, 0, 0,
+ 56, 0, 0, 0, 0, 0, 106, 33, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
+ 0, 0, 0, 53, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 60, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 60, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 100, 0, 0, 0, 0, 0,
+ 0, 0, 100, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 154, 0, 57, 71, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 50, 0, 0,
- 0, 0, 0, 0, 0, 126, 0, 124, 0, 118,
- 117, 0, 46, 0, 21, 0, 0, 0, 0, 0,
- 140, 0, 0, 87, 0, 0, 0, 0, 0, 0,
- 0, 0, 115, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 104, 15, 0, 40, 0, 0,
- 0, 0, 0, 128, 0, 0, 0, 0, 0, 0,
- 0, 51, 0, 0, 99, 0, 0, 0, 0, 90,
- 0, 0, 0, 0, 0, 0, 63, 0, 149, 0,
-
- 148, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 154, 0, 57, 71, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 50, 0, 0, 0, 0, 0,
+ 0, 0, 126, 0, 124, 0, 118, 117, 0, 46,
+ 0, 21, 0, 0, 0, 0, 0, 140, 0, 0,
+ 87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 115, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 104, 15, 0, 40, 0, 0, 0, 0,
+ 0, 128, 0, 0, 0, 0, 0, 0, 51, 0,
+ 0, 99, 0, 0, 0, 0, 90, 0, 0, 0,
+ 0, 0, 0, 63, 0, 149, 0, 148, 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, 119, 0, 0, 0, 0,
- 0, 0, 0, 14, 0, 0, 45, 0, 0, 0,
- 0, 0, 156, 85, 27, 0, 0, 47, 116, 0,
- 0, 152, 121, 0, 0, 0, 0, 0, 0, 0,
- 0, 25, 0, 0, 24, 0, 127, 0, 0, 0,
- 0, 0, 78, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 49, 0, 0, 0,
-
- 0, 41, 0, 0, 0, 0, 0, 0, 105, 0,
- 0, 0, 26, 0, 153, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 44, 0, 0, 20,
- 155, 55, 0, 150, 145, 0, 28, 0, 16, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 14, 0, 0, 45, 0, 0, 0, 0, 0, 156,
+ 85, 27, 0, 0, 47, 116, 0, 0, 0, 152,
+ 121, 0, 0, 0, 0, 0, 0, 0, 0, 25,
+ 0, 0, 24, 0, 127, 0, 0, 0, 0, 0,
+ 78, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 49, 0, 0, 0, 0, 41,
+
+ 0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
+ 0, 26, 0, 153, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 44, 0, 0, 20, 155,
+ 55, 0, 150, 145, 0, 28, 0, 0, 16, 0,
0, 134, 0, 0, 0, 0, 0, 0, 113, 0,
89, 0, 0, 0, 0, 0, 0, 0, 0, 68,
- 0, 0, 0, 0, 0, 0, 0, 0, 135, 13,
- 0, 0, 0, 0, 0, 122, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 112, 0,
- 19, 0, 131, 0, 0, 0, 0, 0, 130, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 135,
+ 13, 0, 0, 0, 0, 0, 122, 0, 0, 0,
+ 0, 0, 0, 0, 119, 0, 0, 0, 0, 0,
+ 112, 0, 19, 0, 131, 0, 0, 0, 0, 0,
- 0, 0, 111, 0, 0, 48, 0, 0, 43, 133,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 130, 0, 0, 0, 111, 0, 0, 48, 0, 0,
+ 43, 133, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 132, 0, 86, 0, 0,
- 0, 0, 0, 0, 109, 114, 52, 0, 0, 0,
- 0, 108, 0, 0, 136, 0, 0, 0, 0, 0,
- 75, 0, 0, 110, 0
+ 0, 0, 0, 0, 0, 0, 0, 132, 0, 86,
+ 0, 0, 0, 0, 0, 0, 109, 114, 52, 0,
+ 0, 0, 0, 108, 0, 0, 136, 0, 0, 0,
+ 0, 0, 75, 0, 0, 110, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -909,347 +909,347 @@ static const YY_CHAR yy_meta[72] =
3
} ;
-static const flex_int16_t yy_base[1478] =
+static const flex_int16_t yy_base[1480] =
{ 0,
0, 70, 19, 29, 41, 49, 52, 58, 87, 95,
- 1828, 1829, 32, 1824, 141, 0, 201, 1829, 206, 88,
- 11, 213, 1829, 1806, 114, 25, 2, 6, 1829, 1829,
- 73, 11, 17, 1829, 1829, 1829, 104, 1812, 1767, 0,
- 1804, 107, 1819, 217, 247, 1829, 1763, 185, 1762, 1768,
- 93, 58, 1760, 91, 211, 195, 14, 273, 195, 1759,
- 181, 275, 202, 209, 76, 68, 188, 1768, 232, 219,
- 296, 284, 207, 1751, 230, 287, 324, 305, 1770, 0,
- 339, 359, 367, 374, 379, 1829, 0, 1829, 301, 344,
- 295, 336, 196, 348, 350, 292, 1829, 1767, 1806, 1829,
-
- 355, 1829, 395, 1795, 331, 1753, 1763, 351, 367, 1758,
- 363, 370, 373, 379, 241, 1801, 0, 446, 375, 1745,
- 1747, 1743, 1751, 363, 1747, 1736, 1737, 76, 1753, 1736,
- 1745, 1745, 322, 1736, 367, 1737, 1735, 359, 1781, 1785,
- 1727, 1778, 1720, 1743, 1740, 1740, 1734, 349, 1727, 1720,
- 1725, 1719, 381, 1730, 1723, 1714, 1713, 1727, 362, 1713,
- 381, 401, 1707, 442, 376, 390, 1728, 1725, 1726, 1724,
- 418, 1706, 1708, 422, 1700, 1717, 1709, 0, 401, 428,
- 441, 441, 445, 448, 1708, 1829, 0, 1751, 461, 1698,
- 1701, 444, 450, 1709, 460, 1752, 473, 1751, 454, 1750,
-
- 1829, 508, 1749, 491, 1710, 1690, 1706, 1703, 1702, 1693,
- 479, 1742, 1736, 1702, 1681, 1689, 1684, 1698, 1694, 1682,
- 1694, 1694, 1685, 1669, 1673, 1686, 1688, 1685, 1677, 1667,
- 1685, 1829, 1680, 1683, 1664, 1663, 1713, 1662, 1672, 1675,
- 453, 1671, 1659, 1670, 1706, 1653, 1709, 1646, 1661, 468,
- 1651, 1667, 1648, 1647, 1653, 1644, 1643, 1650, 1640, 1697,
- 1655, 1654, 1648, 77, 1655, 1650, 1642, 1632, 1647, 1646,
- 1641, 1645, 1626, 1642, 1628, 1634, 1641, 1629, 314, 1622,
- 1636, 1677, 1638, 415, 1629, 489, 1829, 1829, 491, 1829,
- 1829, 1616, 0, 457, 478, 1618, 525, 495, 1672, 1625,
-
- 477, 1829, 1670, 1829, 1664, 544, 1829, 505, 1606, 1662,
- 1608, 1614, 1664, 1621, 1616, 1619, 501, 1829, 1617, 1659,
- 1614, 1611, 536, 1617, 1655, 1649, 1604, 1599, 1596, 1645,
- 1604, 1593, 1609, 1641, 1589, 565, 1603, 1588, 1601, 1588,
- 1598, 1593, 1600, 1595, 1591, 465, 1589, 1592, 1587, 1583,
- 1631, 515, 1625, 1829, 1624, 1576, 1575, 1574, 1567, 1569,
- 1573, 1562, 1575, 542, 1620, 1575, 1572, 1575, 1829, 1574,
- 1563, 1563, 1575, 518, 1550, 1551, 1572, 529, 1554, 1603,
- 1550, 1564, 1563, 1549, 1561, 1560, 1559, 1558, 526, 1599,
- 1598, 1829, 1542, 1541, 576, 1554, 1829, 1829, 1553, 0,
-
- 1542, 1534, 516, 1539, 1590, 1589, 1547, 1587, 1829, 1535,
- 1585, 1829, 554, 614, 538, 1584, 1540, 1536, 1524, 1829,
- 1529, 1535, 1538, 1537, 1524, 1523, 1829, 1525, 1522, 190,
- 1520, 1522, 1829, 1530, 1527, 1512, 1525, 1520, 588, 1527,
- 1515, 1508, 1557, 1829, 1506, 1522, 1554, 1517, 1514, 1515,
- 1517, 1549, 1502, 1497, 1496, 1545, 1491, 1506, 1484, 1491,
- 1496, 1544, 1829, 1491, 1487, 1485, 1494, 1488, 1495, 1479,
- 1479, 1489, 1492, 1481, 1476, 1829, 1531, 1829, 1475, 1486,
- 1523, 1470, 1475, 1484, 1478, 1472, 1481, 1521, 1515, 1479,
- 1462, 1462, 1457, 1477, 1452, 1458, 1457, 1465, 1469, 1452,
-
- 1508, 1450, 1464, 1453, 1829, 1829, 1453, 1451, 1829, 1462,
- 1496, 1458, 0, 1442, 1459, 1497, 1447, 1829, 1829, 1444,
- 1829, 1450, 1829, 554, 562, 590, 1829, 1447, 1435, 1486,
- 1433, 1484, 1431, 1430, 1437, 1430, 1442, 1441, 1441, 1429,
- 1470, 1437, 1429, 1472, 1418, 1434, 1433, 1829, 1418, 1415,
- 1471, 1428, 1420, 1426, 1417, 1425, 1410, 1426, 1408, 1422,
- 551, 1404, 1398, 1403, 1418, 1415, 1416, 1413, 1454, 1411,
- 1829, 1397, 1399, 1408, 1406, 1443, 1442, 1395, 599, 1404,
- 1387, 1388, 1385, 1829, 1399, 1378, 1399, 1396, 1388, 1431,
- 1385, 1392, 1428, 1829, 1375, 1389, 1373, 1387, 1390, 1371,
-
- 1421, 1420, 1419, 1366, 1417, 1416, 1829, 14, 1378, 1378,
- 1376, 1359, 1364, 1366, 1829, 1372, 1362, 1829, 1407, 1355,
- 1410, 568, 577, 554, 1360, 1403, 562, 1407, 563, 1401,
- 1400, 1399, 1353, 1343, 1396, 1349, 1359, 1393, 1356, 1350,
- 1337, 1345, 1388, 1392, 1349, 1348, 1829, 1349, 1342, 1331,
- 1344, 1347, 1342, 1343, 1340, 1339, 1335, 1341, 1336, 1377,
- 1376, 1326, 1316, 560, 1373, 1829, 1372, 1321, 1313, 1314,
- 1363, 1326, 1313, 1324, 1829, 1312, 1321, 1320, 1320, 1360,
- 1303, 1312, 1305, 1316, 1293, 1297, 1348, 1312, 1294, 1304,
- 1344, 1343, 1342, 1289, 1340, 1304, 565, 582, 1281, 1291,
-
- 563, 1829, 1341, 1287, 1297, 1297, 1280, 1285, 1289, 1279,
- 1291, 1294, 1331, 1829, 1325, 585, 1278, 1286, 1285, 1280,
- 1276, 1283, 1829, 1, 24, 75, 187, 226, 288, 315,
- 375, 403, 507, 504, 601, 573, 573, 599, 589, 1829,
- 600, 601, 594, 605, 603, 646, 590, 592, 607, 594,
- 658, 617, 603, 606, 1829, 1829, 616, 621, 626, 614,
- 1829, 1829, 628, 615, 609, 614, 632, 619, 667, 620,
- 670, 621, 677, 1829, 624, 628, 629, 624, 682, 637,
- 627, 628, 624, 637, 648, 632, 650, 645, 646, 648,
- 641, 643, 644, 644, 646, 661, 700, 659, 664, 641,
-
- 1829, 666, 656, 701, 661, 651, 666, 667, 654, 668,
- 1829, 687, 695, 675, 665, 712, 677, 681, 720, 670,
- 665, 677, 672, 673, 669, 678, 673, 729, 688, 679,
- 1829, 681, 692, 677, 693, 687, 733, 701, 686, 687,
- 1829, 703, 706, 689, 746, 691, 1829, 708, 711, 691,
- 709, 747, 707, 703, 698, 716, 715, 716, 702, 717,
- 709, 716, 706, 724, 709, 1829, 717, 723, 711, 769,
- 1829, 720, 725, 767, 720, 732, 727, 731, 729, 727,
- 729, 739, 782, 728, 728, 785, 731, 743, 1829, 731,
- 739, 737, 742, 754, 738, 743, 753, 754, 759, 798,
-
- 757, 773, 779, 752, 763, 754, 806, 751, 1829, 751,
- 771, 760, 765, 772, 813, 814, 763, 1829, 759, 762,
- 761, 781, 778, 783, 784, 770, 778, 787, 767, 782,
- 790, 831, 1829, 832, 833, 786, 796, 798, 787, 783,
- 790, 799, 842, 791, 789, 791, 808, 847, 799, 798,
- 804, 802, 800, 853, 854, 850, 801, 1829, 815, 808,
- 799, 818, 806, 816, 813, 818, 814, 827, 827, 1829,
- 811, 812, 1829, 813, 871, 812, 831, 832, 830, 815,
- 836, 835, 819, 824, 842, 1829, 832, 865, 856, 828,
- 887, 850, 1829, 833, 835, 852, 850, 842, 846, 1829,
-
- 1829, 856, 891, 840, 893, 842, 900, 845, 856, 848,
- 854, 850, 868, 870, 871, 1829, 1829, 870, 1829, 855,
- 856, 876, 866, 859, 871, 913, 879, 1829, 871, 921,
- 864, 923, 1829, 924, 868, 874, 881, 923, 1829, 1829,
- 873, 878, 876, 890, 895, 878, 935, 894, 895, 896,
- 934, 888, 893, 942, 892, 944, 1829, 893, 946, 947,
- 889, 949, 910, 951, 895, 907, 912, 898, 928, 957,
- 917, 1829, 909, 960, 909, 924, 911, 907, 923, 928,
- 910, 968, 923, 928, 1829, 929, 922, 931, 932, 929,
- 919, 922, 922, 927, 980, 981, 926, 983, 980, 923,
-
- 938, 931, 989, 1829, 945, 1829, 1829, 950, 942, 952,
- 938, 939, 949, 999, 945, 955, 1003, 1829, 953, 953,
- 955, 957, 1008, 951, 954, 1829, 973, 1829, 957, 1829,
- 1829, 971, 1829, 965, 1829, 1015, 966, 1017, 1018, 1000,
- 1829, 978, 979, 1829, 967, 975, 969, 968, 971, 971,
- 972, 968, 1829, 990, 976, 977, 992, 992, 995, 995,
- 992, 1034, 998, 990, 1829, 1829, 1001, 1829, 998, 1003,
- 1004, 1001, 1043, 1829, 994, 995, 995, 1001, 1000, 1011,
- 1055, 1829, 1051, 1000, 1829, 1001, 1001, 1003, 1009, 1829,
- 1011, 1063, 1014, 1017, 1066, 1029, 1829, 1026, 1829, 1023,
-
- 1829, 1046, 1066, 1072, 1073, 1074, 1033, 1019, 1077, 1078,
- 1033, 1027, 1081, 1082, 1078, 1043, 1039, 1081, 1031, 1036,
- 1034, 1091, 1049, 1093, 1053, 1095, 1058, 1048, 1042, 1058,
- 1058, 1102, 1046, 1063, 1062, 1829, 1046, 1102, 1103, 1052,
- 1105, 1070, 1071, 1829, 1071, 1058, 1829, 1069, 1116, 1076,
- 1089, 1076, 1829, 1829, 1829, 1064, 1121, 1829, 1829, 1070,
- 1081, 1829, 1829, 1071, 1120, 1065, 1070, 1128, 1078, 1088,
- 1089, 1829, 1132, 1087, 1829, 1134, 1829, 1079, 1094, 1082,
- 1097, 1101, 1829, 1135, 1103, 1096, 1105, 1087, 1094, 1148,
- 1109, 1108, 1151, 1152, 1153, 1104, 1829, 1155, 1156, 1103,
-
- 1158, 1829, 1108, 1160, 1106, 1105, 1163, 1118, 1829, 1160,
- 1113, 1110, 1829, 1124, 1829, 1127, 1170, 1125, 1172, 1133,
- 1116, 1118, 1115, 1131, 1132, 1141, 1829, 1131, 1181, 1829,
- 1829, 1829, 1177, 1829, 1829, 1142, 1829, 1179, 1829, 1133,
- 1140, 1829, 1137, 1142, 1140, 1190, 1191, 1136, 1829, 1151,
- 1829, 1152, 1142, 1154, 1197, 1141, 1149, 1150, 1163, 1829,
- 1162, 1152, 1151, 1165, 1156, 1165, 1167, 1171, 1829, 1829,
- 1210, 1155, 1212, 1172, 1214, 1829, 1210, 1174, 1175, 1162,
- 1157, 1220, 1179, 1180, 1181, 1224, 1183, 1186, 1829, 1227,
- 1829, 1190, 1829, 1172, 1230, 1231, 1176, 1193, 1829, 1179,
-
- 1179, 1181, 1829, 1186, 1196, 1829, 1182, 1194, 1829, 1829,
- 1199, 1193, 1197, 1188, 1240, 1189, 1197, 1206, 1199, 1194,
- 1209, 1200, 1207, 1194, 1209, 1214, 1257, 1216, 1259, 1204,
- 1220, 1211, 1225, 1221, 1214, 1829, 1266, 1829, 1267, 1268,
- 1225, 1224, 1225, 1215, 1829, 1829, 1829, 1273, 1217, 1233,
- 1276, 1829, 1272, 1223, 1829, 1222, 1224, 1235, 1282, 1233,
- 1829, 1242, 1285, 1829, 1829, 1291, 1296, 1301, 1306, 1311,
- 1316, 1321, 1324, 1298, 1303, 1305, 1318
+ 1831, 1832, 32, 1827, 141, 0, 201, 1832, 206, 88,
+ 11, 213, 1832, 1809, 114, 25, 2, 6, 1832, 1832,
+ 73, 11, 17, 1832, 1832, 1832, 104, 1815, 1770, 0,
+ 1807, 107, 1822, 217, 247, 1832, 1766, 185, 1765, 1771,
+ 93, 58, 1763, 91, 211, 195, 14, 273, 195, 1762,
+ 181, 275, 202, 209, 76, 68, 188, 1771, 232, 219,
+ 296, 284, 207, 1754, 230, 287, 324, 305, 1773, 0,
+ 339, 359, 367, 374, 379, 1832, 0, 1832, 301, 344,
+ 295, 336, 196, 348, 350, 292, 1832, 1770, 1809, 1832,
+
+ 355, 1832, 395, 1798, 331, 1756, 1766, 351, 367, 1761,
+ 363, 370, 373, 379, 241, 1804, 0, 446, 375, 1748,
+ 1750, 1746, 1754, 363, 1750, 1739, 1740, 76, 1756, 1739,
+ 1748, 1748, 322, 1739, 367, 1740, 1738, 359, 1784, 1788,
+ 1730, 1781, 1723, 1746, 1743, 1743, 1737, 349, 1730, 1723,
+ 1728, 1722, 381, 1733, 1726, 1717, 1716, 1730, 362, 1716,
+ 381, 1732, 1709, 442, 376, 390, 1730, 1727, 1728, 1726,
+ 417, 1708, 1710, 418, 1702, 1719, 1711, 0, 392, 428,
+ 441, 401, 445, 448, 1710, 1832, 0, 1753, 454, 1700,
+ 1703, 444, 450, 1711, 457, 1754, 460, 1753, 454, 1752,
+
+ 1832, 498, 1751, 482, 1712, 1692, 1708, 1705, 1704, 1695,
+ 468, 1744, 1738, 1704, 1683, 1691, 1686, 1700, 1696, 1684,
+ 1696, 1696, 1687, 1671, 1675, 1688, 1690, 1687, 1679, 1669,
+ 1687, 1832, 1682, 1685, 1666, 1665, 1715, 1664, 1674, 1677,
+ 453, 1673, 1661, 1672, 1708, 1655, 1711, 1648, 1663, 505,
+ 1653, 1669, 1650, 1649, 1655, 1646, 1645, 1652, 1700, 1658,
+ 1657, 1651, 77, 1658, 1653, 1645, 1635, 1650, 1649, 1644,
+ 1648, 1629, 1645, 1631, 1637, 1644, 1632, 314, 1625, 1639,
+ 1680, 1641, 468, 1632, 484, 1832, 1832, 485, 1832, 1832,
+ 1619, 0, 475, 489, 1621, 524, 505, 1675, 1628, 501,
+
+ 1832, 1673, 1832, 1667, 551, 1832, 502, 1609, 1665, 1611,
+ 1617, 1667, 1624, 1619, 1622, 491, 1832, 1620, 1662, 1617,
+ 1614, 540, 1620, 1658, 1652, 1607, 1602, 1599, 1648, 1607,
+ 1596, 1612, 1644, 1592, 548, 1606, 1591, 1604, 1591, 1601,
+ 1596, 1603, 1598, 1594, 500, 1592, 1595, 1590, 1586, 1634,
+ 509, 1628, 1832, 1627, 1579, 1578, 1577, 1570, 1572, 1576,
+ 1565, 1578, 530, 1623, 1578, 1575, 1832, 1578, 1567, 1567,
+ 1579, 521, 1554, 1555, 1576, 531, 1558, 1607, 1554, 1568,
+ 1567, 1553, 1565, 1564, 1563, 1562, 527, 1603, 1602, 1832,
+ 1546, 1545, 574, 1558, 1832, 1832, 1557, 0, 1546, 1538,
+
+ 529, 1543, 1594, 1593, 1551, 1591, 1832, 1539, 1589, 1832,
+ 556, 602, 559, 1588, 1544, 1540, 1528, 1832, 1533, 1539,
+ 1542, 1541, 1528, 1527, 1832, 1529, 1526, 509, 1524, 1526,
+ 1832, 1534, 1531, 1516, 1529, 1524, 583, 1531, 1519, 1512,
+ 1561, 1832, 1510, 1526, 1558, 1521, 1518, 1519, 1521, 1553,
+ 1506, 1501, 1500, 1549, 1495, 1510, 1488, 1495, 1500, 1548,
+ 1832, 1495, 1491, 1489, 1498, 1492, 1499, 1483, 1483, 1493,
+ 1496, 1485, 1480, 1832, 1535, 1832, 1479, 1490, 1475, 1480,
+ 1489, 1483, 1477, 1486, 1526, 1520, 1484, 1467, 1467, 1462,
+ 1482, 1457, 1463, 1462, 1470, 1474, 1457, 1513, 1455, 1469,
+
+ 1458, 1832, 1832, 1458, 1456, 1832, 1467, 1501, 1463, 0,
+ 1447, 1464, 1502, 1452, 1832, 1832, 1449, 1832, 1455, 1832,
+ 556, 568, 596, 1832, 1452, 1440, 1491, 1438, 1489, 1436,
+ 1435, 1442, 1435, 1447, 1446, 1446, 1428, 1433, 1474, 1441,
+ 1433, 1476, 1422, 1438, 1437, 1832, 1422, 1419, 1475, 1432,
+ 1424, 1430, 1421, 1429, 1414, 1430, 1412, 1426, 557, 1408,
+ 1402, 1407, 1422, 1419, 1420, 1417, 1458, 1415, 1832, 1401,
+ 1403, 1412, 1410, 1447, 1446, 1399, 600, 1408, 1391, 1392,
+ 1389, 1832, 1403, 1382, 1401, 1393, 1436, 1390, 1397, 1433,
+ 1832, 1380, 1394, 1378, 1392, 1395, 1376, 1426, 1425, 1424,
+
+ 1371, 1422, 1421, 1832, 14, 1383, 1383, 1381, 1364, 1369,
+ 1371, 1832, 1377, 1367, 1832, 1412, 1360, 1415, 573, 584,
+ 560, 1365, 1408, 200, 1412, 573, 1406, 1405, 1404, 1358,
+ 1348, 1401, 1354, 1362, 1363, 1397, 1360, 1354, 1341, 1349,
+ 1392, 1396, 1353, 1352, 1832, 1353, 1346, 1335, 1348, 1351,
+ 1346, 1347, 1344, 1343, 1339, 1345, 1340, 1381, 1380, 1330,
+ 1320, 575, 1377, 1832, 1376, 1325, 1317, 1318, 1367, 1330,
+ 1317, 1328, 1832, 1316, 1325, 1324, 1324, 1364, 1307, 1316,
+ 1321, 1298, 1302, 1353, 1317, 1299, 1309, 1349, 1348, 1347,
+ 1294, 1345, 1309, 579, 593, 1286, 1296, 577, 1832, 1346,
+
+ 1292, 1302, 1302, 1285, 1290, 1294, 1284, 1296, 1299, 1336,
+ 1832, 1330, 577, 1283, 1291, 1290, 1285, 1281, 1288, 1832,
+ 1276, 1289, 5, 79, 175, 244, 284, 304, 372, 381,
+ 411, 422, 532, 501, 531, 591, 582, 1832, 595, 595,
+ 598, 609, 607, 651, 595, 597, 612, 599, 657, 616,
+ 602, 605, 1832, 1832, 615, 620, 625, 613, 1832, 1832,
+ 627, 614, 608, 613, 631, 618, 666, 619, 669, 620,
+ 676, 1832, 623, 627, 622, 680, 635, 625, 626, 622,
+ 635, 646, 630, 648, 643, 644, 646, 639, 641, 642,
+ 642, 644, 659, 698, 657, 662, 639, 1832, 664, 654,
+
+ 699, 659, 649, 664, 665, 652, 666, 1832, 685, 693,
+ 673, 663, 710, 675, 679, 718, 668, 663, 675, 670,
+ 671, 667, 676, 671, 727, 686, 687, 678, 1832, 680,
+ 691, 676, 692, 687, 732, 701, 685, 686, 1832, 702,
+ 705, 688, 745, 690, 1832, 707, 710, 690, 708, 746,
+ 706, 702, 697, 715, 714, 715, 701, 716, 708, 715,
+ 705, 723, 708, 1832, 716, 722, 767, 1832, 718, 723,
+ 765, 718, 730, 724, 729, 727, 725, 727, 737, 780,
+ 726, 726, 783, 729, 741, 1832, 729, 737, 735, 740,
+ 752, 736, 741, 751, 752, 757, 796, 755, 771, 776,
+
+ 750, 761, 752, 804, 749, 1832, 749, 769, 758, 763,
+ 770, 811, 812, 761, 1832, 809, 758, 761, 760, 780,
+ 777, 782, 783, 769, 777, 786, 766, 783, 790, 830,
+ 1832, 831, 832, 785, 795, 797, 786, 782, 789, 798,
+ 841, 790, 788, 790, 807, 846, 798, 797, 803, 801,
+ 799, 852, 853, 849, 1832, 813, 806, 797, 816, 804,
+ 814, 811, 816, 812, 825, 825, 1832, 809, 810, 1832,
+ 811, 869, 810, 829, 830, 827, 813, 834, 833, 817,
+ 822, 840, 1832, 830, 863, 854, 826, 885, 848, 1832,
+ 831, 833, 850, 848, 840, 844, 1832, 1832, 854, 854,
+
+ 890, 839, 892, 841, 899, 844, 855, 847, 853, 849,
+ 868, 869, 870, 1832, 1832, 869, 1832, 854, 856, 875,
+ 865, 858, 870, 912, 878, 1832, 870, 920, 863, 922,
+ 1832, 923, 867, 873, 880, 922, 1832, 1832, 872, 874,
+ 888, 893, 876, 933, 892, 893, 894, 932, 886, 891,
+ 940, 890, 942, 1832, 891, 944, 945, 887, 947, 908,
+ 949, 893, 905, 910, 896, 926, 955, 915, 1832, 907,
+ 958, 907, 922, 909, 905, 921, 926, 913, 909, 967,
+ 922, 927, 1832, 928, 921, 930, 931, 928, 918, 921,
+ 921, 926, 979, 980, 925, 983, 979, 922, 937, 930,
+
+ 989, 1832, 944, 1832, 1832, 949, 941, 951, 937, 938,
+ 997, 943, 953, 1001, 1832, 951, 951, 953, 955, 1006,
+ 949, 952, 1832, 971, 1832, 955, 1832, 1832, 969, 1832,
+ 963, 1832, 1013, 964, 1015, 1016, 998, 1832, 976, 977,
+ 1832, 965, 973, 967, 966, 969, 969, 970, 977, 967,
+ 1832, 989, 975, 976, 991, 991, 994, 994, 991, 1033,
+ 997, 990, 1832, 1832, 1000, 1832, 997, 1002, 1003, 1000,
+ 1042, 1832, 993, 994, 994, 1000, 999, 1010, 1832, 1049,
+ 998, 1832, 999, 999, 1001, 1007, 1832, 1009, 1061, 1012,
+ 1015, 1064, 1027, 1832, 1024, 1832, 1021, 1832, 1044, 1064,
+
+ 1070, 1071, 1072, 1031, 1017, 1075, 1076, 1031, 1021, 1026,
+ 1080, 1081, 1077, 1042, 1038, 1080, 1030, 1035, 1033, 1090,
+ 1048, 1092, 1052, 1094, 1058, 1047, 1041, 1057, 1057, 1101,
+ 1045, 1062, 1061, 1045, 1101, 1102, 1051, 1104, 1069, 1070,
+ 1832, 1070, 1057, 1832, 1068, 1115, 1075, 1088, 1075, 1832,
+ 1832, 1832, 1063, 1120, 1832, 1832, 1069, 1067, 1081, 1832,
+ 1832, 1071, 1120, 1065, 1070, 1128, 1078, 1088, 1089, 1832,
+ 1132, 1087, 1832, 1134, 1832, 1079, 1094, 1082, 1097, 1101,
+ 1832, 1135, 1103, 1096, 1105, 1087, 1096, 1148, 1109, 1108,
+ 1151, 1152, 1153, 1104, 1832, 1155, 1156, 1103, 1158, 1832,
+
+ 1108, 1108, 1161, 1107, 1106, 1164, 1119, 1832, 1161, 1114,
+ 1111, 1832, 1125, 1832, 1128, 1171, 1126, 1173, 1134, 1117,
+ 1119, 1116, 1132, 1133, 1142, 1832, 1132, 1182, 1832, 1832,
+ 1832, 1178, 1832, 1832, 1143, 1832, 1180, 1137, 1832, 1135,
+ 1142, 1832, 1139, 1144, 1142, 1192, 1193, 1138, 1832, 1153,
+ 1832, 1154, 1144, 1156, 1199, 1143, 1151, 1152, 1165, 1832,
+ 1164, 1154, 1153, 1207, 1168, 1159, 1168, 1170, 1174, 1832,
+ 1832, 1213, 1158, 1215, 1175, 1217, 1832, 1213, 1177, 1178,
+ 1165, 1160, 1223, 1182, 1832, 1183, 1184, 1227, 1186, 1189,
+ 1832, 1230, 1832, 1193, 1832, 1175, 1233, 1234, 1179, 1196,
+
+ 1832, 1182, 1182, 1184, 1832, 1189, 1199, 1832, 1185, 1197,
+ 1832, 1832, 1202, 1196, 1200, 1191, 1243, 1192, 1200, 1209,
+ 1202, 1197, 1212, 1203, 1210, 1197, 1212, 1217, 1260, 1219,
+ 1262, 1207, 1223, 1214, 1228, 1224, 1217, 1832, 1269, 1832,
+ 1270, 1271, 1228, 1227, 1228, 1218, 1832, 1832, 1832, 1276,
+ 1220, 1236, 1279, 1832, 1275, 1226, 1832, 1225, 1227, 1238,
+ 1285, 1236, 1832, 1245, 1288, 1832, 1832, 1294, 1299, 1304,
+ 1309, 1314, 1319, 1324, 1327, 1301, 1306, 1308, 1321
} ;
-static const flex_int16_t yy_def[1478] =
+static const flex_int16_t yy_def[1480] =
{ 0,
- 1466, 1466, 1467, 1467, 1466, 1466, 1466, 1466, 1466, 1466,
- 1465, 1465, 1465, 1465, 1465, 1468, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1469,
- 1465, 1465, 1465, 1470, 15, 1465, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1471, 45, 45,
+ 1468, 1468, 1469, 1469, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1467, 1467, 1467, 1467, 1467, 1470, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1471,
+ 1467, 1467, 1467, 1472, 15, 1467, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1473, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1468,
- 1465, 1465, 1465, 1465, 1465, 1465, 1472, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1469, 1465,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1470,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1474, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1471, 1467,
- 1470, 1465, 1465, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1473, 45, 1471, 45, 45,
+ 1472, 1467, 1467, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1475, 45, 1473, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1472, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1474, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1473,
+ 45, 45, 45, 45, 45, 45, 45, 1474, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1476, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1475,
- 1465, 1471, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1467, 1473, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1475, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1477, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1465, 45, 1465, 45, 1471, 1465, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45,
+ 1467, 45, 1467, 45, 1473, 1467, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45,
+ 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
+ 45, 45, 45, 45, 1467, 1467, 1467, 1478, 45, 45,
+
+ 45, 45, 45, 45, 45, 45, 1467, 45, 45, 1467,
+ 45, 1473, 45, 45, 45, 45, 45, 1467, 45, 45,
+ 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1467, 45, 1467, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1465, 45, 45, 45, 45, 1465, 1465, 1465, 1476,
- 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45,
- 45, 1465, 45, 1471, 45, 45, 45, 45, 45, 1465,
- 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45,
- 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45,
+ 45, 1467, 1467, 45, 45, 1467, 45, 45, 1467, 1479,
+ 45, 45, 45, 45, 1467, 1467, 45, 1467, 45, 1467,
+ 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1465, 45, 1465, 45, 45,
+ 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1465, 1465, 45, 45, 1465, 45,
- 45, 1465, 1477, 45, 45, 45, 45, 1465, 1465, 45,
- 1465, 45, 1465, 45, 45, 45, 1465, 45, 45, 45,
+ 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
+ 45, 1467, 45, 45, 1467, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45,
+ 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
- 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45,
- 45, 45, 45, 45, 1465, 45, 45, 1465, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45,
- 45, 45, 45, 45, 1465, 45, 45, 45, 45, 45,
+ 45, 45, 1467, 1467, 45, 45, 45, 45, 1467, 1467,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45,
- 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45,
- 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1465,
+ 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1465, 1465, 45, 45, 45, 45,
- 1465, 1465, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
+ 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1467, 45, 45, 45, 1467, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1465, 45, 45, 45, 45, 45, 1465, 45, 45, 45,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45,
- 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45,
+ 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1467, 45, 45, 1467,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1467, 45, 45, 45, 45, 45, 45, 1467,
+ 45, 45, 45, 45, 45, 45, 1467, 1467, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45,
- 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1465,
- 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45,
- 45, 45, 1465, 45, 45, 45, 45, 45, 45, 1465,
-
- 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1465, 1465, 45, 1465, 45,
- 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45,
- 45, 45, 1465, 45, 45, 45, 45, 45, 1465, 1465,
+ 45, 45, 45, 1467, 1467, 45, 1467, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
+ 1467, 45, 45, 45, 45, 45, 1467, 1467, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45,
+ 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1465, 45, 45, 45, 45, 45,
+ 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1465, 45, 1465, 1465, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45,
- 45, 45, 45, 45, 45, 1465, 45, 1465, 45, 1465,
- 1465, 45, 1465, 45, 1465, 45, 45, 45, 45, 45,
- 1465, 45, 45, 1465, 45, 45, 45, 45, 45, 45,
- 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1465, 1465, 45, 1465, 45, 45,
- 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45,
- 45, 1465, 45, 45, 1465, 45, 45, 45, 45, 1465,
- 45, 45, 45, 45, 45, 45, 1465, 45, 1465, 45,
-
- 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1467, 45, 1467, 1467, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
+ 45, 45, 1467, 45, 1467, 45, 1467, 1467, 45, 1467,
+ 45, 1467, 45, 45, 45, 45, 45, 1467, 45, 45,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1467, 1467, 45, 1467, 45, 45, 45, 45,
+ 45, 1467, 45, 45, 45, 45, 45, 45, 1467, 45,
+ 45, 1467, 45, 45, 45, 45, 1467, 45, 45, 45,
+ 45, 45, 45, 1467, 45, 1467, 45, 1467, 45, 45,
+
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45,
- 45, 45, 45, 1465, 45, 45, 1465, 45, 45, 45,
- 45, 45, 1465, 1465, 1465, 45, 45, 1465, 1465, 45,
- 45, 1465, 1465, 45, 45, 45, 45, 45, 45, 45,
- 45, 1465, 45, 45, 1465, 45, 1465, 45, 45, 45,
- 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45,
-
- 45, 1465, 45, 45, 45, 45, 45, 45, 1465, 45,
- 45, 45, 1465, 45, 1465, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1465, 45, 45, 1465,
- 1465, 1465, 45, 1465, 1465, 45, 1465, 45, 1465, 45,
- 45, 1465, 45, 45, 45, 45, 45, 45, 1465, 45,
- 1465, 45, 45, 45, 45, 45, 45, 45, 45, 1465,
- 45, 45, 45, 45, 45, 45, 45, 45, 1465, 1465,
- 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45,
- 1465, 45, 1465, 45, 45, 45, 45, 45, 1465, 45,
-
- 45, 45, 1465, 45, 45, 1465, 45, 45, 1465, 1465,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1467, 45, 45, 1467, 45, 45, 45, 45, 45, 1467,
+ 1467, 1467, 45, 45, 1467, 1467, 45, 45, 45, 1467,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
+ 45, 45, 1467, 45, 1467, 45, 45, 45, 45, 45,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1467, 45, 45, 45, 45, 1467,
+
+ 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45,
+ 45, 1467, 45, 1467, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1467, 45, 45, 1467, 1467,
+ 1467, 45, 1467, 1467, 45, 1467, 45, 45, 1467, 45,
+ 45, 1467, 45, 45, 45, 45, 45, 45, 1467, 45,
+ 1467, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
+ 1467, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
+ 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
+ 1467, 45, 1467, 45, 1467, 45, 45, 45, 45, 45,
+
+ 1467, 45, 45, 45, 1467, 45, 45, 1467, 45, 45,
+ 1467, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1465, 45, 1465, 45, 45,
- 45, 45, 45, 45, 1465, 1465, 1465, 45, 45, 45,
- 45, 1465, 45, 45, 1465, 45, 45, 45, 45, 45,
- 1465, 45, 45, 1465, 0, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465
+ 45, 45, 45, 45, 45, 45, 45, 1467, 45, 1467,
+ 45, 45, 45, 45, 45, 45, 1467, 1467, 1467, 45,
+ 45, 45, 45, 1467, 45, 45, 1467, 45, 45, 45,
+ 45, 45, 1467, 45, 45, 1467, 0, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467
} ;
-static const flex_int16_t yy_nxt[1901] =
+static const flex_int16_t yy_nxt[1904] =
{ 0,
- 1465, 13, 14, 13, 1465, 15, 16, 1465, 17, 18,
- 19, 20, 21, 22, 22, 22, 23, 24, 86, 702,
- 37, 14, 37, 87, 25, 26, 38, 1465, 703, 27,
+ 1467, 13, 14, 13, 1467, 15, 16, 1467, 17, 18,
+ 19, 20, 21, 22, 22, 22, 23, 24, 86, 699,
+ 37, 14, 37, 87, 25, 26, 38, 1467, 700, 27,
37, 14, 37, 42, 28, 42, 38, 92, 93, 29,
115, 30, 13, 14, 13, 91, 92, 25, 31, 93,
- 13, 14, 13, 13, 14, 13, 32, 40, 820, 13,
- 14, 13, 33, 40, 115, 92, 93, 821, 91, 34,
+ 13, 14, 13, 13, 14, 13, 32, 40, 1467, 13,
+ 14, 13, 33, 40, 115, 92, 93, 819, 91, 34,
35, 13, 14, 13, 95, 15, 16, 96, 17, 18,
19, 20, 21, 22, 22, 22, 23, 24, 13, 14,
13, 109, 39, 91, 25, 26, 13, 14, 13, 27,
@@ -1257,7 +1257,7 @@ static const flex_int16_t yy_nxt[1901] =
39, 85, 85, 85, 28, 42, 41, 42, 42, 29,
42, 30, 83, 108, 41, 111, 94, 25, 31, 109,
215, 216, 89, 136, 89, 138, 32, 90, 90, 90,
- 137, 373, 33, 139, 374, 83, 108, 822, 111, 34,
+ 137, 371, 33, 139, 372, 83, 108, 820, 111, 34,
35, 44, 44, 44, 45, 45, 46, 45, 45, 45,
45, 45, 45, 45, 45, 47, 45, 45, 45, 45,
45, 48, 45, 49, 50, 45, 51, 45, 52, 53,
@@ -1268,201 +1268,202 @@ static const flex_int16_t yy_nxt[1901] =
74, 75, 76, 77, 78, 79, 57, 45, 45, 45,
45, 45, 81, 105, 82, 82, 82, 81, 114, 84,
84, 84, 102, 105, 81, 83, 84, 84, 84, 108,
- 83, 181, 122, 112, 140, 123, 539, 83, 124, 105,
- 125, 114, 126, 113, 141, 823, 142, 132, 83, 119,
- 159, 540, 108, 83, 160, 120, 112, 103, 133, 181,
+ 83, 181, 122, 112, 140, 123, 821, 83, 124, 105,
+ 125, 114, 126, 113, 141, 718, 142, 132, 83, 119,
+ 159, 719, 108, 83, 160, 120, 112, 103, 133, 181,
83, 45, 148, 135, 161, 199, 149, 45, 134, 45,
45, 113, 45, 163, 45, 45, 45, 164, 117, 144,
- 145, 45, 45, 146, 45, 45, 150, 824, 199, 147,
+ 145, 45, 45, 146, 45, 45, 150, 822, 199, 147,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 90, 90, 90, 45, 127, 302,
- 111, 45, 128, 179, 389, 129, 130, 181, 114, 45,
- 165, 825, 154, 45, 166, 45, 118, 167, 131, 151,
+ 45, 45, 45, 45, 90, 90, 90, 45, 127, 301,
+ 111, 45, 128, 179, 387, 129, 130, 181, 114, 45,
+ 165, 823, 154, 45, 166, 45, 118, 167, 131, 151,
155, 152, 156, 153, 168, 169, 112, 157, 158, 179,
170, 174, 85, 85, 85, 184, 113, 90, 90, 90,
- 102, 175, 826, 83, 180, 221, 176, 222, 189, 171,
+ 102, 175, 824, 83, 180, 221, 176, 222, 189, 171,
81, 172, 82, 82, 82, 89, 179, 89, 180, 192,
90, 90, 90, 83, 113, 81, 83, 84, 84, 84,
180, 173, 85, 85, 85, 103, 189, 193, 83, 195,
101, 196, 182, 83, 183, 192, 83, 101, 197, 209,
198, 240, 189, 228, 224, 241, 229, 195, 210, 211,
- 230, 83, 252, 253, 193, 394, 83, 195, 196, 203,
- 225, 270, 271, 827, 286, 101, 197, 198, 255, 101,
- 204, 256, 257, 101, 258, 195, 272, 246, 259, 196,
- 273, 101, 261, 198, 274, 101, 287, 101, 187, 202,
- 202, 202, 286, 346, 828, 288, 202, 202, 202, 202,
- 202, 202, 288, 287, 286, 395, 279, 298, 357, 299,
- 282, 295, 287, 305, 301, 262, 263, 264, 288, 202,
- 202, 202, 202, 202, 202, 291, 265, 303, 266, 290,
-
- 267, 268, 289, 269, 295, 298, 299, 301, 401, 411,
- 305, 295, 358, 397, 347, 397, 403, 348, 402, 408,
- 303, 306, 306, 306, 457, 458, 359, 315, 306, 306,
- 306, 306, 306, 306, 308, 316, 397, 411, 398, 405,
- 406, 317, 408, 403, 424, 403, 430, 476, 407, 516,
- 431, 306, 306, 306, 306, 306, 306, 414, 414, 414,
- 829, 425, 830, 464, 414, 414, 414, 414, 414, 414,
- 444, 516, 415, 465, 486, 445, 491, 516, 487, 503,
- 492, 509, 504, 524, 622, 525, 510, 414, 414, 414,
- 414, 414, 414, 548, 623, 618, 657, 658, 549, 526,
-
- 624, 716, 715, 477, 675, 717, 831, 721, 724, 725,
- 524, 622, 525, 722, 759, 718, 791, 760, 813, 799,
- 832, 446, 623, 792, 716, 800, 447, 45, 45, 45,
- 715, 833, 793, 794, 45, 45, 45, 45, 45, 45,
- 795, 676, 834, 835, 796, 836, 813, 837, 838, 839,
- 840, 841, 843, 844, 845, 846, 842, 45, 45, 45,
- 45, 45, 45, 847, 848, 849, 850, 851, 852, 853,
- 854, 855, 856, 857, 858, 859, 861, 862, 863, 860,
- 864, 865, 866, 867, 868, 869, 870, 871, 872, 873,
- 874, 875, 876, 877, 878, 879, 880, 881, 882, 883,
-
- 884, 885, 886, 887, 888, 889, 890, 891, 892, 893,
- 894, 895, 896, 897, 898, 899, 900, 901, 902, 903,
- 904, 905, 906, 907, 908, 909, 910, 911, 912, 913,
- 914, 915, 916, 917, 918, 919, 920, 921, 922, 923,
- 924, 925, 903, 926, 927, 902, 928, 929, 930, 931,
- 932, 933, 935, 936, 937, 938, 939, 940, 941, 942,
- 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,
- 954, 955, 956, 957, 958, 959, 960, 961, 962, 963,
- 953, 964, 965, 966, 967, 968, 969, 970, 971, 972,
- 973, 974, 975, 976, 977, 978, 979, 980, 981, 982,
-
- 983, 984, 985, 986, 987, 988, 990, 934, 989, 991,
- 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001,
- 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
- 1012, 1013, 1014, 988, 1015, 989, 1016, 1017, 1019, 1021,
- 1022, 1023, 1018, 1024, 1025, 1026, 1027, 1028, 1029, 1030,
- 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
- 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050,
- 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
- 1020, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
- 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
-
- 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089,
- 1090, 1091, 1069, 1092, 1093, 1094, 1095, 1096, 1070, 1097,
- 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107,
- 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117,
- 1118, 1119, 1120, 1121, 1122, 1124, 1125, 1126, 1127, 1128,
- 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138,
- 1139, 1140, 1141, 1142, 1143, 1144, 1146, 1147, 1148, 1149,
- 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159,
- 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1140,
- 1169, 1170, 1171, 1173, 1174, 1123, 1175, 1176, 1177, 1178,
-
- 1172, 1179, 1180, 1181, 1182, 1183, 1184, 1145, 1185, 1186,
- 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196,
- 1197, 1198, 1199, 1201, 1202, 1203, 1204, 1200, 1205, 1206,
- 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
- 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1202, 1224, 1225,
- 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
- 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
- 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255,
- 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
- 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1274, 1275, 1276,
-
- 1277, 1278, 1251, 1279, 1280, 1281, 1282, 1283, 1284, 1285,
- 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
- 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305,
- 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315,
- 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325,
- 1326, 1299, 1273, 1327, 1328, 1329, 1330, 1331, 1332, 1333,
- 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
- 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353,
- 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363,
- 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
-
- 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
- 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393,
- 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403,
- 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413,
- 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423,
- 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433,
- 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443,
- 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453,
- 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463,
- 1464, 12, 12, 12, 12, 12, 36, 36, 36, 36,
-
- 36, 80, 293, 80, 80, 80, 99, 400, 99, 513,
- 99, 101, 101, 101, 101, 101, 116, 116, 116, 116,
- 116, 178, 101, 178, 178, 178, 200, 200, 200, 819,
- 818, 817, 816, 815, 814, 812, 811, 810, 809, 808,
- 807, 806, 805, 804, 803, 802, 801, 798, 797, 790,
- 789, 788, 787, 786, 785, 784, 783, 782, 781, 780,
- 779, 778, 777, 776, 775, 774, 773, 772, 771, 770,
- 769, 768, 767, 766, 765, 764, 763, 762, 761, 758,
- 757, 756, 755, 754, 753, 752, 751, 750, 749, 748,
- 747, 746, 745, 744, 743, 742, 741, 740, 739, 738,
-
- 737, 736, 735, 734, 733, 732, 731, 730, 729, 728,
- 727, 726, 723, 720, 719, 714, 713, 712, 711, 710,
- 709, 708, 707, 706, 705, 704, 701, 700, 699, 698,
- 697, 696, 695, 694, 693, 692, 691, 690, 689, 688,
- 687, 686, 685, 684, 683, 682, 681, 680, 679, 678,
- 677, 674, 673, 672, 671, 670, 669, 668, 667, 666,
- 665, 664, 663, 662, 661, 660, 659, 656, 655, 654,
- 653, 652, 651, 650, 649, 648, 647, 646, 645, 644,
- 643, 642, 641, 640, 639, 638, 637, 636, 635, 634,
- 633, 632, 631, 630, 629, 628, 627, 626, 625, 621,
-
- 620, 619, 618, 617, 616, 615, 614, 613, 612, 611,
- 610, 609, 608, 607, 606, 605, 604, 603, 602, 601,
- 600, 599, 598, 597, 596, 595, 594, 593, 592, 591,
- 590, 589, 588, 587, 586, 585, 584, 583, 582, 581,
- 580, 579, 578, 577, 576, 575, 574, 573, 572, 571,
- 570, 569, 568, 567, 566, 565, 564, 563, 562, 561,
- 560, 559, 558, 557, 556, 555, 554, 553, 552, 551,
- 550, 547, 546, 545, 544, 543, 542, 541, 538, 537,
- 536, 535, 534, 533, 532, 531, 530, 529, 528, 527,
- 523, 522, 521, 520, 519, 518, 517, 515, 514, 512,
-
- 511, 508, 507, 506, 505, 502, 501, 500, 499, 498,
- 497, 496, 495, 494, 493, 490, 489, 488, 485, 484,
- 483, 482, 481, 480, 479, 478, 475, 474, 473, 472,
- 471, 470, 469, 468, 467, 466, 463, 462, 461, 460,
- 459, 456, 455, 454, 453, 452, 451, 450, 449, 448,
- 443, 442, 441, 440, 439, 438, 437, 436, 435, 434,
- 433, 432, 429, 428, 427, 426, 423, 422, 421, 420,
- 419, 418, 417, 416, 413, 412, 410, 409, 404, 399,
- 396, 393, 392, 391, 390, 388, 387, 386, 385, 384,
- 383, 382, 381, 380, 379, 378, 377, 376, 375, 372,
-
- 371, 370, 369, 368, 367, 366, 365, 364, 363, 362,
- 361, 360, 356, 355, 354, 353, 352, 351, 350, 349,
- 345, 344, 343, 342, 341, 340, 339, 338, 337, 336,
- 335, 334, 333, 332, 331, 330, 329, 328, 327, 326,
- 325, 324, 323, 322, 321, 320, 319, 318, 314, 313,
- 312, 311, 310, 309, 307, 201, 304, 302, 300, 297,
- 296, 294, 292, 285, 284, 283, 281, 280, 278, 277,
- 276, 275, 260, 254, 251, 250, 249, 248, 247, 245,
- 244, 243, 242, 239, 238, 237, 236, 235, 234, 233,
- 232, 231, 227, 226, 223, 220, 219, 218, 217, 214,
-
- 213, 212, 208, 207, 206, 205, 201, 194, 191, 190,
- 188, 186, 185, 177, 162, 143, 121, 110, 107, 106,
- 104, 43, 100, 98, 97, 88, 43, 1465, 11, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465
-
+ 230, 83, 252, 253, 193, 285, 83, 195, 196, 203,
+ 225, 269, 270, 825, 285, 101, 197, 198, 255, 101,
+ 204, 256, 257, 101, 826, 195, 271, 246, 196, 198,
+ 272, 101, 260, 285, 273, 101, 286, 101, 187, 202,
+ 202, 202, 288, 345, 827, 287, 202, 202, 202, 202,
+ 202, 202, 287, 286, 294, 278, 281, 297, 392, 298,
+ 828, 300, 286, 304, 302, 261, 262, 263, 287, 202,
+ 202, 202, 202, 202, 202, 290, 264, 294, 265, 289,
+
+ 266, 267, 294, 268, 300, 297, 298, 302, 395, 395,
+ 304, 305, 305, 305, 346, 356, 314, 347, 305, 305,
+ 305, 305, 305, 305, 315, 307, 399, 401, 393, 406,
+ 316, 395, 396, 409, 422, 474, 400, 829, 403, 404,
+ 401, 305, 305, 305, 305, 305, 305, 405, 830, 357,
+ 428, 423, 406, 442, 429, 536, 401, 462, 443, 455,
+ 456, 409, 513, 358, 412, 412, 412, 463, 537, 413,
+ 538, 412, 412, 412, 412, 412, 412, 483, 488, 506,
+ 500, 484, 489, 501, 507, 521, 619, 522, 546, 831,
+ 513, 475, 513, 547, 412, 412, 412, 412, 412, 412,
+
+ 620, 615, 655, 656, 444, 673, 621, 712, 713, 445,
+ 810, 714, 521, 619, 522, 45, 45, 45, 721, 722,
+ 523, 715, 45, 45, 45, 45, 45, 45, 620, 757,
+ 788, 713, 758, 796, 832, 712, 833, 789, 810, 797,
+ 834, 835, 674, 790, 791, 45, 45, 45, 45, 45,
+ 45, 792, 836, 837, 838, 793, 839, 841, 842, 843,
+ 844, 840, 845, 846, 847, 848, 849, 850, 851, 852,
+ 853, 854, 855, 856, 857, 859, 860, 861, 858, 862,
+ 863, 864, 865, 866, 867, 868, 869, 870, 871, 872,
+ 873, 874, 875, 876, 877, 878, 879, 880, 881, 882,
+
+ 883, 884, 885, 886, 887, 888, 889, 890, 891, 892,
+ 893, 894, 895, 896, 897, 898, 899, 900, 901, 902,
+ 903, 904, 905, 906, 907, 908, 909, 910, 911, 912,
+ 913, 914, 915, 916, 917, 918, 919, 920, 921, 922,
+ 900, 923, 924, 899, 925, 926, 927, 928, 929, 930,
+ 931, 933, 934, 935, 936, 937, 938, 939, 940, 941,
+ 942, 943, 944, 945, 946, 947, 948, 949, 950, 952,
+ 953, 954, 955, 956, 957, 958, 959, 960, 961, 951,
+ 962, 963, 964, 965, 966, 967, 968, 969, 970, 971,
+ 972, 973, 974, 975, 976, 977, 978, 979, 980, 981,
+
+ 982, 983, 984, 985, 987, 986, 932, 988, 989, 990,
+ 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000,
+ 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+ 1011, 985, 986, 1012, 1013, 1014, 1015, 1017, 1019, 1020,
+ 1021, 1016, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
+ 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
+ 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049,
+ 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1018,
+ 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
+ 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078,
+
+ 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088,
+ 1066, 1089, 1090, 1091, 1092, 1093, 1067, 1094, 1095, 1096,
+ 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106,
+ 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
+ 1117, 1118, 1119, 1121, 1122, 1123, 1124, 1125, 1126, 1127,
+ 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137,
+ 1138, 1139, 1140, 1141, 1143, 1144, 1145, 1146, 1147, 1148,
+ 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158,
+ 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1137, 1166, 1167,
+ 1168, 1169, 1171, 1120, 1172, 1173, 1174, 1175, 1176, 1170,
+
+ 1177, 1178, 1179, 1180, 1181, 1142, 1182, 1183, 1184, 1185,
+ 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
+ 1196, 1198, 1199, 1200, 1201, 1197, 1202, 1203, 1204, 1205,
+ 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
+ 1216, 1217, 1218, 1219, 1220, 1199, 1221, 1222, 1223, 1224,
+ 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
+ 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244,
+ 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254,
+ 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
+ 1265, 1266, 1267, 1268, 1269, 1270, 1272, 1273, 1274, 1275,
+
+ 1248, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284,
+ 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294,
+ 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304,
+ 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314,
+ 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324,
+ 1297, 1271, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332,
+ 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342,
+ 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352,
+ 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
+ 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372,
+
+ 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382,
+ 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
+ 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402,
+ 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
+ 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422,
+ 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432,
+ 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442,
+ 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452,
+ 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462,
+ 1463, 1464, 1465, 1466, 12, 12, 12, 12, 12, 36,
+
+ 36, 36, 36, 36, 80, 292, 80, 80, 80, 99,
+ 398, 99, 510, 99, 101, 101, 101, 101, 101, 116,
+ 116, 116, 116, 116, 178, 101, 178, 178, 178, 200,
+ 200, 200, 818, 817, 816, 815, 814, 813, 812, 811,
+ 809, 808, 807, 806, 805, 804, 803, 802, 801, 800,
+ 799, 798, 795, 794, 787, 786, 785, 784, 783, 782,
+ 781, 780, 779, 778, 777, 776, 775, 774, 773, 772,
+ 771, 770, 769, 768, 767, 766, 765, 764, 763, 762,
+ 761, 760, 759, 756, 755, 754, 753, 752, 751, 750,
+ 749, 748, 747, 746, 745, 744, 743, 742, 741, 740,
+
+ 739, 738, 737, 736, 735, 734, 733, 732, 731, 730,
+ 729, 728, 727, 726, 725, 724, 723, 720, 717, 716,
+ 711, 710, 709, 708, 707, 706, 705, 704, 703, 702,
+ 701, 698, 697, 696, 695, 694, 693, 692, 691, 690,
+ 689, 688, 687, 686, 685, 684, 683, 682, 681, 680,
+ 679, 678, 677, 676, 675, 672, 671, 670, 669, 668,
+ 667, 666, 665, 664, 663, 662, 661, 660, 659, 658,
+ 657, 654, 653, 652, 651, 650, 649, 648, 647, 646,
+ 645, 644, 643, 642, 641, 640, 639, 638, 637, 636,
+ 635, 634, 633, 632, 631, 630, 629, 628, 627, 626,
+
+ 625, 624, 623, 622, 618, 617, 616, 615, 614, 613,
+ 612, 611, 610, 609, 608, 607, 606, 605, 604, 603,
+ 602, 601, 600, 599, 598, 597, 596, 595, 594, 593,
+ 592, 591, 590, 589, 588, 587, 586, 585, 584, 583,
+ 582, 581, 580, 579, 578, 577, 576, 575, 574, 573,
+ 572, 571, 570, 569, 568, 567, 566, 565, 564, 563,
+ 562, 561, 560, 559, 558, 557, 556, 555, 554, 553,
+ 552, 551, 550, 549, 548, 545, 544, 543, 542, 541,
+ 540, 539, 535, 534, 533, 532, 531, 530, 529, 528,
+ 527, 526, 525, 524, 520, 519, 518, 517, 516, 515,
+
+ 514, 512, 511, 509, 508, 505, 504, 503, 502, 499,
+ 498, 497, 496, 495, 494, 493, 492, 491, 490, 487,
+ 486, 485, 482, 481, 480, 479, 478, 477, 476, 473,
+ 472, 471, 470, 469, 468, 467, 466, 465, 464, 461,
+ 460, 459, 458, 457, 454, 453, 452, 451, 450, 449,
+ 448, 447, 446, 441, 440, 439, 438, 437, 436, 435,
+ 434, 433, 432, 431, 430, 427, 426, 425, 424, 421,
+ 420, 419, 418, 417, 416, 415, 414, 411, 410, 408,
+ 407, 402, 397, 394, 391, 390, 389, 388, 386, 385,
+ 384, 383, 382, 381, 380, 379, 378, 377, 376, 375,
+
+ 374, 373, 370, 369, 368, 367, 366, 365, 364, 363,
+ 362, 361, 360, 359, 355, 354, 353, 352, 351, 350,
+ 349, 348, 344, 343, 342, 341, 340, 339, 338, 337,
+ 336, 335, 334, 333, 332, 331, 330, 329, 328, 327,
+ 326, 325, 324, 323, 322, 321, 320, 319, 318, 317,
+ 313, 312, 311, 310, 309, 308, 306, 201, 303, 301,
+ 299, 296, 295, 293, 291, 284, 283, 282, 280, 279,
+ 277, 276, 275, 274, 259, 258, 254, 251, 250, 249,
+ 248, 247, 245, 244, 243, 242, 239, 238, 237, 236,
+ 235, 234, 233, 232, 231, 227, 226, 223, 220, 219,
+
+ 218, 217, 214, 213, 212, 208, 207, 206, 205, 201,
+ 194, 191, 190, 188, 186, 185, 177, 162, 143, 121,
+ 110, 107, 106, 104, 43, 100, 98, 97, 88, 43,
+ 1467, 11, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+
+ 1467, 1467, 1467
} ;
-static const flex_int16_t yy_chk[1901] =
+static const flex_int16_t yy_chk[1904] =
{ 0,
0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 21, 608,
- 3, 3, 3, 21, 1, 1, 3, 0, 608, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 21, 605,
+ 3, 3, 3, 21, 1, 1, 3, 0, 605, 1,
4, 4, 4, 13, 1, 13, 4, 27, 28, 1,
57, 1, 5, 5, 5, 26, 32, 1, 1, 33,
- 6, 6, 6, 7, 7, 7, 1, 7, 724, 8,
- 8, 8, 1, 8, 57, 27, 28, 725, 26, 1,
+ 6, 6, 6, 7, 7, 7, 1, 7, 0, 8,
+ 8, 8, 1, 8, 57, 27, 28, 723, 26, 1,
1, 2, 2, 2, 32, 2, 2, 33, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 9, 9,
9, 52, 5, 31, 2, 2, 10, 10, 10, 2,
@@ -1470,7 +1471,7 @@ static const flex_int16_t yy_chk[1901] =
6, 20, 20, 20, 2, 37, 9, 37, 42, 2,
42, 2, 20, 51, 10, 54, 31, 2, 2, 52,
128, 128, 25, 65, 25, 66, 2, 25, 25, 25,
- 65, 264, 2, 66, 264, 20, 51, 726, 54, 2,
+ 65, 263, 2, 66, 263, 20, 51, 724, 54, 2,
2, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -1481,190 +1482,191 @@ static const flex_int16_t yy_chk[1901] =
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 17, 48, 17, 17, 17, 19, 56, 19,
19, 19, 44, 59, 22, 17, 22, 22, 22, 64,
- 19, 93, 61, 55, 67, 61, 430, 22, 61, 48,
- 61, 56, 61, 55, 67, 727, 67, 63, 17, 59,
- 73, 430, 64, 19, 73, 59, 55, 44, 63, 93,
+ 19, 93, 61, 55, 67, 61, 725, 22, 61, 48,
+ 61, 56, 61, 55, 67, 624, 67, 63, 17, 59,
+ 73, 624, 64, 19, 73, 59, 55, 44, 63, 93,
22, 45, 70, 64, 73, 115, 70, 45, 63, 45,
45, 55, 45, 75, 45, 45, 45, 75, 58, 69,
- 69, 45, 45, 69, 45, 58, 70, 728, 115, 69,
+ 69, 45, 45, 69, 45, 58, 70, 726, 115, 69,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 58, 89, 89, 89, 58, 62, 279,
- 71, 58, 62, 91, 279, 62, 62, 96, 78, 58,
- 76, 729, 72, 58, 76, 58, 58, 76, 62, 71,
+ 45, 45, 45, 58, 89, 89, 89, 58, 62, 278,
+ 71, 58, 62, 91, 278, 62, 62, 96, 78, 58,
+ 76, 727, 72, 58, 76, 58, 58, 76, 62, 71,
72, 71, 72, 71, 76, 76, 77, 72, 72, 91,
76, 78, 81, 81, 81, 96, 77, 90, 90, 90,
- 101, 78, 730, 81, 92, 133, 78, 133, 105, 77,
+ 101, 78, 728, 81, 92, 133, 78, 133, 105, 77,
82, 77, 82, 82, 82, 83, 94, 83, 95, 108,
83, 83, 83, 82, 77, 84, 81, 84, 84, 84,
92, 77, 85, 85, 85, 101, 105, 109, 84, 111,
103, 112, 94, 85, 95, 108, 82, 103, 113, 124,
114, 148, 119, 138, 135, 148, 138, 153, 124, 124,
- 138, 84, 159, 159, 109, 284, 85, 111, 112, 119,
- 135, 165, 165, 731, 179, 103, 113, 114, 161, 103,
- 119, 161, 161, 103, 162, 153, 166, 153, 162, 171,
- 166, 103, 164, 174, 166, 103, 180, 103, 103, 118,
- 118, 118, 179, 241, 732, 181, 118, 118, 118, 118,
- 118, 118, 184, 183, 182, 284, 171, 192, 250, 193,
- 174, 189, 180, 199, 195, 164, 164, 164, 181, 118,
- 118, 118, 118, 118, 118, 184, 164, 197, 164, 183,
-
- 164, 164, 182, 164, 189, 192, 193, 195, 294, 301,
- 199, 204, 250, 286, 241, 289, 295, 241, 294, 298,
- 197, 202, 202, 202, 346, 346, 250, 211, 202, 202,
- 202, 202, 202, 202, 204, 211, 286, 301, 289, 297,
- 297, 211, 298, 308, 317, 295, 323, 364, 297, 403,
- 323, 202, 202, 202, 202, 202, 202, 306, 306, 306,
- 733, 317, 734, 352, 306, 306, 306, 306, 306, 306,
- 336, 415, 308, 352, 374, 336, 378, 403, 374, 389,
- 378, 395, 389, 413, 524, 413, 395, 306, 306, 306,
- 306, 306, 306, 439, 525, 526, 561, 561, 439, 415,
-
- 526, 623, 622, 364, 579, 624, 735, 627, 629, 629,
- 413, 524, 413, 627, 664, 624, 697, 664, 716, 701,
- 736, 336, 525, 697, 623, 701, 336, 414, 414, 414,
- 622, 737, 698, 698, 414, 414, 414, 414, 414, 414,
- 698, 579, 738, 739, 698, 741, 716, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 746, 414, 414, 414,
- 414, 414, 414, 751, 752, 753, 754, 757, 758, 759,
- 760, 763, 764, 765, 766, 767, 768, 769, 770, 767,
- 771, 772, 773, 775, 776, 777, 778, 779, 780, 781,
- 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
-
- 792, 793, 794, 795, 796, 797, 798, 799, 800, 802,
- 803, 804, 805, 806, 807, 808, 809, 810, 812, 813,
- 814, 815, 816, 817, 818, 819, 820, 821, 822, 823,
- 824, 825, 826, 827, 828, 829, 830, 832, 833, 834,
- 835, 836, 813, 837, 838, 812, 839, 840, 842, 843,
- 844, 845, 846, 848, 849, 850, 851, 852, 853, 854,
- 855, 856, 857, 858, 859, 860, 861, 862, 863, 864,
- 865, 867, 868, 869, 870, 872, 873, 874, 875, 876,
- 864, 877, 878, 879, 880, 881, 882, 883, 884, 885,
- 886, 887, 888, 890, 891, 892, 893, 894, 895, 896,
-
- 897, 898, 899, 900, 901, 902, 904, 845, 903, 905,
- 906, 907, 908, 910, 911, 912, 913, 914, 915, 916,
- 917, 919, 920, 921, 922, 923, 924, 925, 926, 927,
- 928, 929, 930, 902, 931, 903, 932, 934, 935, 936,
- 937, 938, 934, 939, 940, 941, 942, 943, 944, 945,
- 946, 947, 948, 949, 950, 951, 952, 953, 954, 955,
- 956, 957, 959, 960, 961, 962, 963, 964, 965, 966,
- 967, 968, 969, 971, 972, 974, 975, 976, 977, 978,
- 935, 979, 980, 981, 982, 983, 984, 985, 987, 988,
- 989, 990, 991, 992, 994, 995, 996, 997, 998, 999,
-
- 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
- 1012, 1013, 988, 1014, 1015, 1018, 1020, 1021, 989, 1022,
- 1023, 1024, 1025, 1026, 1027, 1029, 1030, 1031, 1032, 1034,
- 1035, 1036, 1037, 1038, 1041, 1042, 1043, 1044, 1045, 1046,
- 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
- 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
- 1068, 1069, 1070, 1071, 1073, 1074, 1075, 1076, 1077, 1078,
- 1079, 1080, 1081, 1082, 1083, 1084, 1086, 1087, 1088, 1089,
- 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1069,
- 1099, 1100, 1101, 1102, 1103, 1051, 1105, 1108, 1109, 1110,
-
- 1101, 1111, 1112, 1113, 1114, 1115, 1116, 1074, 1117, 1119,
- 1120, 1121, 1122, 1123, 1124, 1125, 1127, 1129, 1132, 1134,
- 1136, 1137, 1138, 1139, 1140, 1142, 1143, 1138, 1145, 1146,
- 1147, 1148, 1149, 1150, 1151, 1152, 1154, 1155, 1156, 1157,
- 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1140, 1167, 1169,
- 1170, 1171, 1172, 1173, 1175, 1176, 1177, 1178, 1179, 1180,
- 1181, 1183, 1184, 1186, 1187, 1188, 1189, 1191, 1192, 1193,
- 1194, 1195, 1196, 1198, 1200, 1202, 1203, 1204, 1205, 1206,
- 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
- 1217, 1218, 1219, 1220, 1221, 1221, 1222, 1223, 1224, 1225,
-
- 1226, 1227, 1202, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
- 1235, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1245, 1246,
- 1248, 1249, 1250, 1251, 1252, 1256, 1257, 1260, 1261, 1264,
- 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1273, 1274, 1276,
- 1278, 1279, 1280, 1281, 1282, 1284, 1285, 1286, 1287, 1288,
- 1289, 1251, 1222, 1290, 1291, 1292, 1293, 1294, 1295, 1296,
- 1298, 1299, 1300, 1301, 1303, 1304, 1305, 1306, 1307, 1308,
- 1310, 1311, 1312, 1314, 1316, 1317, 1318, 1319, 1320, 1321,
- 1322, 1323, 1324, 1325, 1326, 1328, 1329, 1333, 1336, 1338,
- 1340, 1341, 1343, 1344, 1345, 1346, 1347, 1348, 1350, 1352,
-
- 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1361, 1362, 1363,
- 1364, 1365, 1366, 1367, 1368, 1371, 1372, 1373, 1374, 1375,
- 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
- 1387, 1388, 1390, 1392, 1394, 1395, 1396, 1397, 1398, 1400,
- 1401, 1402, 1404, 1405, 1407, 1408, 1411, 1412, 1413, 1414,
- 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424,
- 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434,
- 1435, 1437, 1439, 1440, 1441, 1442, 1443, 1444, 1448, 1449,
- 1450, 1451, 1453, 1454, 1456, 1457, 1458, 1459, 1460, 1462,
- 1463, 1466, 1466, 1466, 1466, 1466, 1467, 1467, 1467, 1467,
-
- 1467, 1468, 1474, 1468, 1468, 1468, 1469, 1475, 1469, 1476,
- 1469, 1470, 1470, 1470, 1470, 1470, 1471, 1471, 1471, 1471,
- 1471, 1472, 1477, 1472, 1472, 1472, 1473, 1473, 1473, 722,
- 721, 720, 719, 718, 717, 715, 713, 712, 711, 710,
- 709, 708, 707, 706, 705, 704, 703, 700, 699, 696,
- 695, 694, 693, 692, 691, 690, 689, 688, 687, 686,
- 685, 684, 683, 682, 681, 680, 679, 678, 677, 676,
- 674, 673, 672, 671, 670, 669, 668, 667, 665, 663,
- 662, 661, 660, 659, 658, 657, 656, 655, 654, 653,
- 652, 651, 650, 649, 648, 646, 645, 644, 643, 642,
-
- 641, 640, 639, 638, 637, 636, 635, 634, 633, 632,
- 631, 630, 628, 626, 625, 621, 620, 619, 617, 616,
- 614, 613, 612, 611, 610, 609, 606, 605, 604, 603,
- 602, 601, 600, 599, 598, 597, 596, 595, 593, 592,
- 591, 590, 589, 588, 587, 586, 585, 583, 582, 581,
- 580, 578, 577, 576, 575, 574, 573, 572, 570, 569,
- 568, 567, 566, 565, 564, 563, 562, 560, 559, 558,
- 557, 556, 555, 554, 553, 552, 551, 550, 549, 547,
- 546, 545, 544, 543, 542, 541, 540, 539, 538, 537,
- 536, 535, 534, 533, 532, 531, 530, 529, 528, 522,
-
- 520, 517, 516, 515, 514, 512, 511, 510, 508, 507,
- 504, 503, 502, 501, 500, 499, 498, 497, 496, 495,
- 494, 493, 492, 491, 490, 489, 488, 487, 486, 485,
- 484, 483, 482, 481, 480, 479, 477, 475, 474, 473,
- 472, 471, 470, 469, 468, 467, 466, 465, 464, 462,
- 461, 460, 459, 458, 457, 456, 455, 454, 453, 452,
- 451, 450, 449, 448, 447, 446, 445, 443, 442, 441,
- 440, 438, 437, 436, 435, 434, 432, 431, 429, 428,
- 426, 425, 424, 423, 422, 421, 419, 418, 417, 416,
- 411, 410, 408, 407, 406, 405, 404, 402, 401, 399,
-
- 396, 394, 393, 391, 390, 388, 387, 386, 385, 384,
- 383, 382, 381, 380, 379, 377, 376, 375, 373, 372,
- 371, 370, 368, 367, 366, 365, 363, 362, 361, 360,
- 359, 358, 357, 356, 355, 353, 351, 350, 349, 348,
- 347, 345, 344, 343, 342, 341, 340, 339, 338, 337,
- 335, 334, 333, 332, 331, 330, 329, 328, 327, 326,
- 325, 324, 322, 321, 320, 319, 316, 315, 314, 313,
- 312, 311, 310, 309, 305, 303, 300, 299, 296, 292,
- 285, 283, 282, 281, 280, 278, 277, 276, 275, 274,
- 273, 272, 271, 270, 269, 268, 267, 266, 265, 263,
-
- 262, 261, 260, 259, 258, 257, 256, 255, 254, 253,
- 252, 251, 249, 248, 247, 246, 245, 244, 243, 242,
- 240, 239, 238, 237, 236, 235, 234, 233, 231, 230,
- 229, 228, 227, 226, 225, 224, 223, 222, 221, 220,
- 219, 218, 217, 216, 215, 214, 213, 212, 210, 209,
- 208, 207, 206, 205, 203, 200, 198, 196, 194, 191,
- 190, 188, 185, 177, 176, 175, 173, 172, 170, 169,
- 168, 167, 163, 160, 158, 157, 156, 155, 154, 152,
- 151, 150, 149, 147, 146, 145, 144, 143, 142, 141,
- 140, 139, 137, 136, 134, 132, 131, 130, 129, 127,
-
- 126, 125, 123, 122, 121, 120, 116, 110, 107, 106,
- 104, 99, 98, 79, 74, 68, 60, 53, 50, 49,
- 47, 43, 41, 39, 38, 24, 14, 11, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465,
- 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465
+ 138, 84, 159, 159, 109, 179, 85, 111, 112, 119,
+ 135, 165, 165, 729, 182, 103, 113, 114, 161, 103,
+ 119, 161, 161, 103, 730, 153, 166, 153, 171, 174,
+ 166, 103, 164, 179, 166, 103, 180, 103, 103, 118,
+ 118, 118, 182, 241, 731, 181, 118, 118, 118, 118,
+ 118, 118, 184, 183, 189, 171, 174, 192, 283, 193,
+ 732, 195, 180, 199, 197, 164, 164, 164, 181, 118,
+ 118, 118, 118, 118, 118, 184, 164, 189, 164, 183,
+
+ 164, 164, 204, 164, 195, 192, 193, 197, 285, 288,
+ 199, 202, 202, 202, 241, 250, 211, 241, 202, 202,
+ 202, 202, 202, 202, 211, 204, 293, 294, 283, 297,
+ 211, 285, 288, 300, 316, 363, 293, 733, 296, 296,
+ 307, 202, 202, 202, 202, 202, 202, 296, 734, 250,
+ 322, 316, 297, 335, 322, 428, 294, 351, 335, 345,
+ 345, 300, 401, 250, 305, 305, 305, 351, 428, 307,
+ 428, 305, 305, 305, 305, 305, 305, 372, 376, 393,
+ 387, 372, 376, 387, 393, 411, 521, 411, 437, 735,
+ 401, 363, 413, 437, 305, 305, 305, 305, 305, 305,
+
+ 522, 523, 559, 559, 335, 577, 523, 619, 620, 335,
+ 713, 621, 411, 521, 411, 412, 412, 412, 626, 626,
+ 413, 621, 412, 412, 412, 412, 412, 412, 522, 662,
+ 694, 620, 662, 698, 736, 619, 737, 694, 713, 698,
+ 739, 740, 577, 695, 695, 412, 412, 412, 412, 412,
+ 412, 695, 741, 742, 743, 695, 744, 745, 746, 747,
+ 748, 744, 749, 750, 751, 752, 755, 756, 757, 758,
+ 761, 762, 763, 764, 765, 766, 767, 768, 765, 769,
+ 770, 771, 773, 774, 775, 776, 777, 778, 779, 780,
+ 781, 782, 783, 784, 785, 786, 787, 788, 789, 790,
+
+ 791, 792, 793, 794, 795, 796, 797, 799, 800, 801,
+ 802, 803, 804, 805, 806, 807, 809, 810, 811, 812,
+ 813, 814, 815, 816, 817, 818, 819, 820, 821, 822,
+ 823, 824, 825, 826, 827, 828, 830, 831, 832, 833,
+ 810, 834, 835, 809, 836, 837, 838, 840, 841, 842,
+ 843, 844, 846, 847, 848, 849, 850, 851, 852, 853,
+ 854, 855, 856, 857, 858, 859, 860, 861, 862, 863,
+ 865, 866, 867, 869, 870, 871, 872, 873, 874, 862,
+ 875, 876, 877, 878, 879, 880, 881, 882, 883, 884,
+ 885, 887, 888, 889, 890, 891, 892, 893, 894, 895,
+
+ 896, 897, 898, 899, 901, 900, 843, 902, 903, 904,
+ 905, 907, 908, 909, 910, 911, 912, 913, 914, 916,
+ 917, 918, 919, 920, 921, 922, 923, 924, 925, 926,
+ 927, 899, 900, 928, 929, 930, 932, 933, 934, 935,
+ 936, 932, 937, 938, 939, 940, 941, 942, 943, 944,
+ 945, 946, 947, 948, 949, 950, 951, 952, 953, 954,
+ 956, 957, 958, 959, 960, 961, 962, 963, 964, 965,
+ 966, 968, 969, 971, 972, 973, 974, 975, 976, 933,
+ 977, 978, 979, 980, 981, 982, 984, 985, 986, 987,
+ 988, 989, 991, 992, 993, 994, 995, 996, 999, 1000,
+
+ 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+ 985, 1011, 1012, 1013, 1016, 1018, 986, 1019, 1020, 1021,
+ 1022, 1023, 1024, 1025, 1027, 1028, 1029, 1030, 1032, 1033,
+ 1034, 1035, 1036, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
+ 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1055, 1056,
+ 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066,
+ 1067, 1068, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077,
+ 1078, 1079, 1080, 1081, 1082, 1084, 1085, 1086, 1087, 1088,
+ 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1066, 1096, 1097,
+ 1098, 1099, 1100, 1048, 1101, 1103, 1106, 1107, 1108, 1099,
+
+ 1109, 1110, 1111, 1112, 1113, 1071, 1114, 1116, 1117, 1118,
+ 1119, 1120, 1121, 1122, 1124, 1126, 1129, 1131, 1133, 1134,
+ 1135, 1136, 1137, 1139, 1140, 1135, 1142, 1143, 1144, 1145,
+ 1146, 1147, 1148, 1149, 1150, 1152, 1153, 1154, 1155, 1156,
+ 1157, 1158, 1159, 1160, 1161, 1137, 1162, 1165, 1167, 1168,
+ 1169, 1170, 1171, 1173, 1174, 1175, 1176, 1177, 1178, 1180,
+ 1181, 1183, 1184, 1185, 1186, 1188, 1189, 1190, 1191, 1192,
+ 1193, 1195, 1197, 1199, 1200, 1201, 1202, 1203, 1204, 1205,
+ 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
+ 1216, 1217, 1218, 1219, 1219, 1220, 1221, 1222, 1223, 1224,
+
+ 1199, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233,
+ 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1242, 1243, 1245,
+ 1246, 1247, 1248, 1249, 1253, 1254, 1257, 1258, 1259, 1262,
+ 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1271, 1272, 1274,
+ 1276, 1277, 1278, 1279, 1280, 1282, 1283, 1284, 1285, 1286,
+ 1248, 1220, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294,
+ 1296, 1297, 1298, 1299, 1301, 1302, 1303, 1304, 1305, 1306,
+ 1307, 1309, 1310, 1311, 1313, 1315, 1316, 1317, 1318, 1319,
+ 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1328, 1332, 1335,
+ 1337, 1338, 1340, 1341, 1343, 1344, 1345, 1346, 1347, 1348,
+
+ 1350, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1361,
+ 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1372, 1373,
+ 1374, 1375, 1376, 1378, 1379, 1380, 1381, 1382, 1383, 1384,
+ 1386, 1387, 1388, 1389, 1390, 1392, 1394, 1396, 1397, 1398,
+ 1399, 1400, 1402, 1403, 1404, 1406, 1407, 1409, 1410, 1413,
+ 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423,
+ 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433,
+ 1434, 1435, 1436, 1437, 1439, 1441, 1442, 1443, 1444, 1445,
+ 1446, 1450, 1451, 1452, 1453, 1455, 1456, 1458, 1459, 1460,
+ 1461, 1462, 1464, 1465, 1468, 1468, 1468, 1468, 1468, 1469,
+
+ 1469, 1469, 1469, 1469, 1470, 1476, 1470, 1470, 1470, 1471,
+ 1477, 1471, 1478, 1471, 1472, 1472, 1472, 1472, 1472, 1473,
+ 1473, 1473, 1473, 1473, 1474, 1479, 1474, 1474, 1474, 1475,
+ 1475, 1475, 722, 721, 719, 718, 717, 716, 715, 714,
+ 712, 710, 709, 708, 707, 706, 705, 704, 703, 702,
+ 701, 700, 697, 696, 693, 692, 691, 690, 689, 688,
+ 687, 686, 685, 684, 683, 682, 681, 680, 679, 678,
+ 677, 676, 675, 674, 672, 671, 670, 669, 668, 667,
+ 666, 665, 663, 661, 660, 659, 658, 657, 656, 655,
+ 654, 653, 652, 651, 650, 649, 648, 647, 646, 644,
+ 643, 642, 641, 640, 639, 638, 637, 636, 635, 634,
+ 633, 632, 631, 630, 629, 628, 627, 625, 623, 622,
+ 618, 617, 616, 614, 613, 611, 610, 609, 608, 607,
+ 606, 603, 602, 601, 600, 599, 598, 597, 596, 595,
+ 594, 593, 592, 590, 589, 588, 587, 586, 585, 584,
+ 583, 581, 580, 579, 578, 576, 575, 574, 573, 572,
+ 571, 570, 568, 567, 566, 565, 564, 563, 562, 561,
+ 560, 558, 557, 556, 555, 554, 553, 552, 551, 550,
+ 549, 548, 547, 545, 544, 543, 542, 541, 540, 539,
+ 538, 537, 536, 535, 534, 533, 532, 531, 530, 529,
+
+ 528, 527, 526, 525, 519, 517, 514, 513, 512, 511,
+ 509, 508, 507, 505, 504, 501, 500, 499, 498, 497,
+ 496, 495, 494, 493, 492, 491, 490, 489, 488, 487,
+ 486, 485, 484, 483, 482, 481, 480, 479, 478, 477,
+ 475, 473, 472, 471, 470, 469, 468, 467, 466, 465,
+ 464, 463, 462, 460, 459, 458, 457, 456, 455, 454,
+ 453, 452, 451, 450, 449, 448, 447, 446, 445, 444,
+ 443, 441, 440, 439, 438, 436, 435, 434, 433, 432,
+ 430, 429, 427, 426, 424, 423, 422, 421, 420, 419,
+ 417, 416, 415, 414, 409, 408, 406, 405, 404, 403,
+
+ 402, 400, 399, 397, 394, 392, 391, 389, 388, 386,
+ 385, 384, 383, 382, 381, 380, 379, 378, 377, 375,
+ 374, 373, 371, 370, 369, 368, 366, 365, 364, 362,
+ 361, 360, 359, 358, 357, 356, 355, 354, 352, 350,
+ 349, 348, 347, 346, 344, 343, 342, 341, 340, 339,
+ 338, 337, 336, 334, 333, 332, 331, 330, 329, 328,
+ 327, 326, 325, 324, 323, 321, 320, 319, 318, 315,
+ 314, 313, 312, 311, 310, 309, 308, 304, 302, 299,
+ 298, 295, 291, 284, 282, 281, 280, 279, 277, 276,
+ 275, 274, 273, 272, 271, 270, 269, 268, 267, 266,
+
+ 265, 264, 262, 261, 260, 259, 258, 257, 256, 255,
+ 254, 253, 252, 251, 249, 248, 247, 246, 245, 244,
+ 243, 242, 240, 239, 238, 237, 236, 235, 234, 233,
+ 231, 230, 229, 228, 227, 226, 225, 224, 223, 222,
+ 221, 220, 219, 218, 217, 216, 215, 214, 213, 212,
+ 210, 209, 208, 207, 206, 205, 203, 200, 198, 196,
+ 194, 191, 190, 188, 185, 177, 176, 175, 173, 172,
+ 170, 169, 168, 167, 163, 162, 160, 158, 157, 156,
+ 155, 154, 152, 151, 150, 149, 147, 146, 145, 144,
+ 143, 142, 141, 140, 139, 137, 136, 134, 132, 131,
+
+ 130, 129, 127, 126, 125, 123, 122, 121, 120, 116,
+ 110, 107, 106, 104, 99, 98, 79, 74, 68, 60,
+ 53, 50, 49, 47, 43, 41, 39, 38, 24, 14,
+ 11, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+ 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
+
+ 1467, 1467, 1467
} ;
static yy_state_type yy_last_accepting_state;
@@ -1746,7 +1748,7 @@ using namespace isc::dhcp;
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1750 "dhcp4_lexer.cc"
+#line 1752 "dhcp4_lexer.cc"
/* noyywrap disables automatic rewinding for the next file to parse. Since we
always parse only a single string, there's no need to do any wraps. And
using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1772,8 +1774,8 @@ using namespace isc::dhcp;
by moving it ahead by yyleng bytes. yyleng specifies the length of the
currently matched token. */
#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1776 "dhcp4_lexer.cc"
-#line 1777 "dhcp4_lexer.cc"
+#line 1778 "dhcp4_lexer.cc"
+#line 1779 "dhcp4_lexer.cc"
#define INITIAL 0
#define COMMENT 1
@@ -2101,7 +2103,7 @@ YY_DECL
}
-#line 2105 "dhcp4_lexer.cc"
+#line 2107 "dhcp4_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -2130,13 +2132,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1466 )
+ if ( yy_current_state >= 1468 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 1465 );
+ while ( yy_current_state != 1467 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -2942,7 +2944,7 @@ YY_RULE_SETUP
case isc::dhcp::Parser4Context::RESERVATIONS:
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
- case isc::dhcp::Parser4Context::QUEUE_CONTROL:
+ case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
case isc::dhcp::Parser4Context::LOGGERS:
case isc::dhcp::Parser4Context::DHCP_DDNS:
return isc::dhcp::Dhcp4Parser::make_USER_CONTEXT(driver.loc_);
@@ -2966,7 +2968,7 @@ YY_RULE_SETUP
case isc::dhcp::Parser4Context::RESERVATIONS:
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
- case isc::dhcp::Parser4Context::QUEUE_CONTROL:
+ case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
case isc::dhcp::Parser4Context::LOGGERS:
case isc::dhcp::Parser4Context::DHCP_DDNS:
return isc::dhcp::Dhcp4Parser::make_COMMENT(driver.loc_);
@@ -3647,9 +3649,9 @@ YY_RULE_SETUP
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
- return isc::dhcp::Dhcp4Parser::make_QUEUE_CONTROL(driver.loc_);
+ return isc::dhcp::Dhcp4Parser::make_DHCP_QUEUE_CONTROL(driver.loc_);
default:
- return isc::dhcp::Dhcp4Parser::make_STRING("queue-control", driver.loc_);
+ return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-queue-control", driver.loc_);
}
}
YY_BREAK
@@ -4380,7 +4382,7 @@ YY_RULE_SETUP
#line 1804 "dhcp4_lexer.ll"
ECHO;
YY_BREAK
-#line 4384 "dhcp4_lexer.cc"
+#line 4386 "dhcp4_lexer.cc"
case YY_END_OF_BUFFER:
{
@@ -4699,7 +4701,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1466 )
+ if ( yy_current_state >= 1468 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4732,11 +4734,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1466 )
+ if ( yy_current_state >= 1468 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 1465);
+ yy_is_jam = (yy_current_state == 1467);
return yy_is_jam ? 0 : yy_current_state;
}
diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll
index 7c4816aa1c..bbecaecfc8 100644
--- a/src/bin/dhcp4/dhcp4_lexer.ll
+++ b/src/bin/dhcp4/dhcp4_lexer.ll
@@ -706,7 +706,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
case isc::dhcp::Parser4Context::RESERVATIONS:
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
- case isc::dhcp::Parser4Context::QUEUE_CONTROL:
+ case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
case isc::dhcp::Parser4Context::LOGGERS:
case isc::dhcp::Parser4Context::DHCP_DDNS:
return isc::dhcp::Dhcp4Parser::make_USER_CONTEXT(driver.loc_);
@@ -727,7 +727,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
case isc::dhcp::Parser4Context::RESERVATIONS:
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
- case isc::dhcp::Parser4Context::QUEUE_CONTROL:
+ case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
case isc::dhcp::Parser4Context::LOGGERS:
case isc::dhcp::Parser4Context::DHCP_DDNS:
return isc::dhcp::Dhcp4Parser::make_COMMENT(driver.loc_);
@@ -1241,12 +1241,12 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
}
}
-\"queue-control\" {
+\"dhcp-queue-control\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
- return isc::dhcp::Dhcp4Parser::make_QUEUE_CONTROL(driver.loc_);
+ return isc::dhcp::Dhcp4Parser::make_DHCP_QUEUE_CONTROL(driver.loc_);
default:
- return isc::dhcp::Dhcp4Parser::make_STRING("queue-control", driver.loc_);
+ return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-queue-control", driver.loc_);
}
}
diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc
index d422775701..9d5bd33de5 100644
--- a/src/bin/dhcp4/dhcp4_parser.cc
+++ b/src/bin/dhcp4/dhcp4_parser.cc
@@ -2958,7 +2958,7 @@ namespace isc { namespace dhcp {
break;
case 528:
-#line 1834 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1832 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2966,10 +2966,10 @@ namespace isc { namespace dhcp {
break;
case 529:
-#line 1836 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1834 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr qc = yystack_[0].value.as< ElementPtr > ();
- ctx.stack_.back()->set("queue-control", qc);
+ ctx.stack_.back()->set("dhcp-queue-control", qc);
if (!qc->contains("queue-type")) {
std::stringstream msg;
@@ -2984,7 +2984,7 @@ namespace isc { namespace dhcp {
break;
case 530:
-#line 1852 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1850 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-ddns", m);
@@ -2995,7 +2995,7 @@ namespace isc { namespace dhcp {
break;
case 531:
-#line 1857 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1855 "dhcp4_parser.yy" // lalr1.cc:859
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -3006,7 +3006,7 @@ namespace isc { namespace dhcp {
break;
case 532:
-#line 1864 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1862 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3016,7 +3016,7 @@ namespace isc { namespace dhcp {
break;
case 533:
-#line 1868 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1866 "dhcp4_parser.yy" // lalr1.cc:859
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3026,7 +3026,7 @@ namespace isc { namespace dhcp {
break;
case 555:
-#line 1899 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1897 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
@@ -3035,7 +3035,7 @@ namespace isc { namespace dhcp {
break;
case 556:
-#line 1904 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1902 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3043,7 +3043,7 @@ namespace isc { namespace dhcp {
break;
case 557:
-#line 1906 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1904 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("qualifying-suffix", s);
@@ -3053,7 +3053,7 @@ namespace isc { namespace dhcp {
break;
case 558:
-#line 1912 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1910 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3061,7 +3061,7 @@ namespace isc { namespace dhcp {
break;
case 559:
-#line 1914 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1912 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-ip", s);
@@ -3071,7 +3071,7 @@ namespace isc { namespace dhcp {
break;
case 560:
-#line 1920 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1918 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
@@ -3080,7 +3080,7 @@ namespace isc { namespace dhcp {
break;
case 561:
-#line 1925 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1923 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3088,7 +3088,7 @@ namespace isc { namespace dhcp {
break;
case 562:
-#line 1927 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1925 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-ip", s);
@@ -3098,7 +3098,7 @@ namespace isc { namespace dhcp {
break;
case 563:
-#line 1933 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1931 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
@@ -3107,7 +3107,7 @@ namespace isc { namespace dhcp {
break;
case 564:
-#line 1938 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1936 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
@@ -3116,7 +3116,7 @@ namespace isc { namespace dhcp {
break;
case 565:
-#line 1943 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1941 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_PROTOCOL);
}
@@ -3124,7 +3124,7 @@ namespace isc { namespace dhcp {
break;
case 566:
-#line 1945 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1943 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3133,19 +3133,19 @@ namespace isc { namespace dhcp {
break;
case 567:
-#line 1951 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1949 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
#line 3139 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 568:
-#line 1952 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1950 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
#line 3145 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 569:
-#line 1955 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1953 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_FORMAT);
}
@@ -3153,7 +3153,7 @@ namespace isc { namespace dhcp {
break;
case 570:
-#line 1957 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1955 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
@@ -3163,7 +3163,7 @@ namespace isc { namespace dhcp {
break;
case 571:
-#line 1963 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1961 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-include-fqdn", b);
@@ -3172,7 +3172,7 @@ namespace isc { namespace dhcp {
break;
case 572:
-#line 1968 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1966 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
@@ -3181,7 +3181,7 @@ namespace isc { namespace dhcp {
break;
case 573:
-#line 1973 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1971 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
@@ -3190,7 +3190,7 @@ namespace isc { namespace dhcp {
break;
case 574:
-#line 1978 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1976 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
@@ -3198,7 +3198,7 @@ namespace isc { namespace dhcp {
break;
case 575:
-#line 1980 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1978 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3207,7 +3207,7 @@ namespace isc { namespace dhcp {
break;
case 576:
-#line 1986 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1984 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
@@ -3215,7 +3215,7 @@ namespace isc { namespace dhcp {
break;
case 577:
-#line 1989 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1987 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
@@ -3223,7 +3223,7 @@ namespace isc { namespace dhcp {
break;
case 578:
-#line 1992 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1990 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
}
@@ -3231,7 +3231,7 @@ namespace isc { namespace dhcp {
break;
case 579:
-#line 1995 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1993 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
}
@@ -3239,7 +3239,7 @@ namespace isc { namespace dhcp {
break;
case 580:
-#line 1998 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1996 "dhcp4_parser.yy" // lalr1.cc:859
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
@@ -3248,7 +3248,7 @@ namespace isc { namespace dhcp {
break;
case 581:
-#line 2004 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2002 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3256,7 +3256,7 @@ namespace isc { namespace dhcp {
break;
case 582:
-#line 2006 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2004 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("generated-prefix", s);
@@ -3266,7 +3266,7 @@ namespace isc { namespace dhcp {
break;
case 583:
-#line 2012 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2010 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3274,7 +3274,7 @@ namespace isc { namespace dhcp {
break;
case 584:
-#line 2014 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2012 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
@@ -3284,7 +3284,7 @@ namespace isc { namespace dhcp {
break;
case 585:
-#line 2020 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2018 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3292,7 +3292,7 @@ namespace isc { namespace dhcp {
break;
case 586:
-#line 2022 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2020 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
@@ -3302,7 +3302,7 @@ namespace isc { namespace dhcp {
break;
case 587:
-#line 2031 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2029 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3310,7 +3310,7 @@ namespace isc { namespace dhcp {
break;
case 588:
-#line 2033 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2031 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3319,7 +3319,7 @@ namespace isc { namespace dhcp {
break;
case 589:
-#line 2038 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2036 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3327,7 +3327,7 @@ namespace isc { namespace dhcp {
break;
case 590:
-#line 2040 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2038 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3336,7 +3336,7 @@ namespace isc { namespace dhcp {
break;
case 591:
-#line 2045 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2043 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3344,7 +3344,7 @@ namespace isc { namespace dhcp {
break;
case 592:
-#line 2047 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2045 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3353,7 +3353,7 @@ namespace isc { namespace dhcp {
break;
case 593:
-#line 2052 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2050 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -3363,7 +3363,7 @@ namespace isc { namespace dhcp {
break;
case 594:
-#line 2056 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2054 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
@@ -3371,7 +3371,7 @@ namespace isc { namespace dhcp {
break;
case 595:
-#line 2061 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2059 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-control", i);
@@ -3382,7 +3382,7 @@ namespace isc { namespace dhcp {
break;
case 596:
-#line 2066 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2064 "dhcp4_parser.yy" // lalr1.cc:859
{
// No config control params are required
ctx.stack_.pop_back();
@@ -3392,7 +3392,7 @@ namespace isc { namespace dhcp {
break;
case 597:
-#line 2072 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2070 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the config-control map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3402,7 +3402,7 @@ namespace isc { namespace dhcp {
break;
case 598:
-#line 2076 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2074 "dhcp4_parser.yy" // lalr1.cc:859
{
// No config_control params are required
// parsing completed
@@ -3411,7 +3411,7 @@ namespace isc { namespace dhcp {
break;
case 603:
-#line 2091 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2089 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-databases", l);
@@ -3422,7 +3422,7 @@ namespace isc { namespace dhcp {
break;
case 604:
-#line 2096 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2094 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -3431,7 +3431,7 @@ namespace isc { namespace dhcp {
break;
case 605:
-#line 2106 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2104 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
@@ -3442,7 +3442,7 @@ namespace isc { namespace dhcp {
break;
case 606:
-#line 2111 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2109 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -3451,7 +3451,7 @@ namespace isc { namespace dhcp {
break;
case 607:
-#line 2116 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2114 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the Logging map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3461,7 +3461,7 @@ namespace isc { namespace dhcp {
break;
case 608:
-#line 2120 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2118 "dhcp4_parser.yy" // lalr1.cc:859
{
// parsing completed
}
@@ -3469,7 +3469,7 @@ namespace isc { namespace dhcp {
break;
case 612:
-#line 2136 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2134 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
@@ -3480,7 +3480,7 @@ namespace isc { namespace dhcp {
break;
case 613:
-#line 2141 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2139 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -3489,7 +3489,7 @@ namespace isc { namespace dhcp {
break;
case 616:
-#line 2153 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2151 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
@@ -3499,7 +3499,7 @@ namespace isc { namespace dhcp {
break;
case 617:
-#line 2157 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2155 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
@@ -3507,7 +3507,7 @@ namespace isc { namespace dhcp {
break;
case 627:
-#line 2174 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2172 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
@@ -3516,7 +3516,7 @@ namespace isc { namespace dhcp {
break;
case 628:
-#line 2179 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2177 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3524,7 +3524,7 @@ namespace isc { namespace dhcp {
break;
case 629:
-#line 2181 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2179 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
@@ -3534,7 +3534,7 @@ namespace isc { namespace dhcp {
break;
case 630:
-#line 2187 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2185 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
@@ -3545,7 +3545,7 @@ namespace isc { namespace dhcp {
break;
case 631:
-#line 2192 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2190 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -3554,7 +3554,7 @@ namespace isc { namespace dhcp {
break;
case 634:
-#line 2201 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2199 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -3564,7 +3564,7 @@ namespace isc { namespace dhcp {
break;
case 635:
-#line 2205 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2203 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
@@ -3572,7 +3572,7 @@ namespace isc { namespace dhcp {
break;
case 642:
-#line 2219 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2217 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -3580,7 +3580,7 @@ namespace isc { namespace dhcp {
break;
case 643:
-#line 2221 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2219 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
@@ -3590,7 +3590,7 @@ namespace isc { namespace dhcp {
break;
case 644:
-#line 2227 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2225 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
@@ -3599,7 +3599,7 @@ namespace isc { namespace dhcp {
break;
case 645:
-#line 2232 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2230 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
@@ -3608,7 +3608,7 @@ namespace isc { namespace dhcp {
break;
case 646:
-#line 2237 "dhcp4_parser.yy" // lalr1.cc:859
+#line 2235 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
@@ -4680,7 +4680,7 @@ namespace isc { namespace dhcp {
"\"hold-reclaimed-time\"", "\"max-reclaim-leases\"",
"\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"",
"\"dhcp4o6-port\"", "\"control-socket\"", "\"socket-type\"",
- "\"socket-name\"", "\"queue-control\"", "\"dhcp-ddns\"",
+ "\"socket-name\"", "\"dhcp-queue-control\"", "\"dhcp-ddns\"",
"\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"",
"\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
"\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
@@ -4765,7 +4765,7 @@ namespace isc { namespace dhcp {
"client_class_param", "client_class_name", "client_class_test", "$@96",
"only_if_required", "dhcp4o6_port", "control_socket", "$@97",
"control_socket_params", "control_socket_param", "control_socket_type",
- "$@98", "control_socket_name", "$@99", "queue_control", "$@100",
+ "$@98", "control_socket_name", "$@99", "dhcp_queue_control", "$@100",
"dhcp_ddns", "$@101", "sub_dhcp_ddns", "$@102", "dhcp_ddns_params",
"dhcp_ddns_param", "enable_updates", "qualifying_suffix", "$@103",
"server_ip", "$@104", "server_port", "sender_ip", "$@105", "sender_port",
@@ -4842,19 +4842,19 @@ namespace isc { namespace dhcp {
1721, 1731, 1732, 1735, 1735, 1745, 1746, 1749, 1750, 1753,
1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763,
1766, 1768, 1768, 1776, 1785, 1792, 1792, 1802, 1803, 1806,
- 1807, 1808, 1809, 1810, 1813, 1813, 1821, 1821, 1834, 1834,
- 1852, 1852, 1864, 1864, 1874, 1875, 1878, 1879, 1880, 1881,
- 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891,
- 1892, 1893, 1894, 1895, 1896, 1899, 1904, 1904, 1912, 1912,
- 1920, 1925, 1925, 1933, 1938, 1943, 1943, 1951, 1952, 1955,
- 1955, 1963, 1968, 1973, 1978, 1978, 1986, 1989, 1992, 1995,
- 1998, 2004, 2004, 2012, 2012, 2020, 2020, 2031, 2031, 2038,
- 2038, 2045, 2045, 2052, 2052, 2061, 2061, 2072, 2072, 2082,
- 2083, 2087, 2088, 2091, 2091, 2106, 2106, 2116, 2116, 2127,
- 2128, 2132, 2136, 2136, 2148, 2149, 2153, 2153, 2161, 2162,
- 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2174, 2179, 2179,
- 2187, 2187, 2197, 2198, 2201, 2201, 2209, 2210, 2213, 2214,
- 2215, 2216, 2219, 2219, 2227, 2232, 2237
+ 1807, 1808, 1809, 1810, 1813, 1813, 1821, 1821, 1832, 1832,
+ 1850, 1850, 1862, 1862, 1872, 1873, 1876, 1877, 1878, 1879,
+ 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889,
+ 1890, 1891, 1892, 1893, 1894, 1897, 1902, 1902, 1910, 1910,
+ 1918, 1923, 1923, 1931, 1936, 1941, 1941, 1949, 1950, 1953,
+ 1953, 1961, 1966, 1971, 1976, 1976, 1984, 1987, 1990, 1993,
+ 1996, 2002, 2002, 2010, 2010, 2018, 2018, 2029, 2029, 2036,
+ 2036, 2043, 2043, 2050, 2050, 2059, 2059, 2070, 2070, 2080,
+ 2081, 2085, 2086, 2089, 2089, 2104, 2104, 2114, 2114, 2125,
+ 2126, 2130, 2134, 2134, 2146, 2147, 2151, 2151, 2159, 2160,
+ 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2172, 2177, 2177,
+ 2185, 2185, 2195, 2196, 2199, 2199, 2207, 2208, 2211, 2212,
+ 2213, 2214, 2217, 2217, 2225, 2230, 2235
};
// Print the state stack on the debug stream.
@@ -4890,7 +4890,7 @@ namespace isc { namespace dhcp {
#line 14 "dhcp4_parser.yy" // lalr1.cc:1167
} } // isc::dhcp
#line 4893 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 2242 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 2240 "dhcp4_parser.yy" // lalr1.cc:1168
void
diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h
index 8f8806811c..0a3b9305dd 100644
--- a/src/bin/dhcp4/dhcp4_parser.h
+++ b/src/bin/dhcp4/dhcp4_parser.h
@@ -460,7 +460,7 @@ namespace isc { namespace dhcp {
TOKEN_CONTROL_SOCKET = 367,
TOKEN_SOCKET_TYPE = 368,
TOKEN_SOCKET_NAME = 369,
- TOKEN_QUEUE_CONTROL = 370,
+ TOKEN_DHCP_QUEUE_CONTROL = 370,
TOKEN_DHCP_DDNS = 371,
TOKEN_ENABLE_UPDATES = 372,
TOKEN_QUALIFYING_SUFFIX = 373,
@@ -1082,7 +1082,7 @@ namespace isc { namespace dhcp {
static inline
symbol_type
- make_QUEUE_CONTROL (const location_type& l);
+ make_DHCP_QUEUE_CONTROL (const location_type& l);
static inline
symbol_type
@@ -2579,9 +2579,9 @@ namespace isc { namespace dhcp {
}
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_QUEUE_CONTROL (const location_type& l)
+ Dhcp4Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
{
- return symbol_type (token::TOKEN_QUEUE_CONTROL, l);
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
}
Dhcp4Parser::symbol_type
diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy
index 8413657158..40c2529742 100644
--- a/src/bin/dhcp4/dhcp4_parser.yy
+++ b/src/bin/dhcp4/dhcp4_parser.yy
@@ -170,7 +170,7 @@ using namespace std;
SOCKET_TYPE "socket-type"
SOCKET_NAME "socket-name"
- QUEUE_CONTROL "queue-control"
+ DHCP_QUEUE_CONTROL "dhcp-queue-control"
DHCP_DDNS "dhcp-ddns"
ENABLE_UPDATES "enable-updates"
@@ -450,7 +450,7 @@ global_param: valid_lifetime
| expired_leases_processing
| dhcp4o6_port
| control_socket
- | queue_control
+ | dhcp_queue_control
| dhcp_ddns
| echo_client_id
| match_client_id
@@ -1827,15 +1827,13 @@ control_socket_name: SOCKET_NAME {
};
-// --- queue control ---------------------------------------------
+// --- dhcp-queue-control ---------------------------------------------
-// --- queue-control ---------------------------------------------
-
-queue_control: QUEUE_CONTROL {
+dhcp_queue_control: DHCP_QUEUE_CONTROL {
ctx.enter(ctx.NO_KEYWORD);
} COLON map_value {
ElementPtr qc = $4;
- ctx.stack_.back()->set("queue-control", qc);
+ ctx.stack_.back()->set("dhcp-queue-control", qc);
if (!qc->contains("queue-type")) {
std::stringstream msg;
diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc
index e3379ac5d8..9ea3a697f7 100644
--- a/src/bin/dhcp4/json_config_parser.cc
+++ b/src/bin/dhcp4/json_config_parser.cc
@@ -24,7 +24,7 @@
#include <dhcpsrv/parsers/host_reservations_list_parser.h>
#include <dhcpsrv/parsers/ifaces_config_parser.h>
#include <dhcpsrv/parsers/option_data_parser.h>
-#include <dhcpsrv/parsers/queue_control_parser.h>
+#include <dhcpsrv/parsers/dhcp_queue_control_parser.h>
#include <dhcpsrv/parsers/simple_parser4.h>
#include <dhcpsrv/parsers/shared_networks_list_parser.h>
#include <dhcpsrv/parsers/sanity_checks_parser.h>
@@ -381,9 +381,9 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set,
continue;
}
- if (config_pair.first == "queue-control") {
- QueueControlParser parser(AF_INET);
- srv_cfg->setQueueControlInfo(parser.parse(config_pair.second));
+ if (config_pair.first == "dhcp-queue-control") {
+ DHCPQueueControlParser parser(AF_INET);
+ srv_cfg->setDHCPQueueControl(parser.parse(config_pair.second));
continue;
}
diff --git a/src/bin/dhcp4/parser_context.cc b/src/bin/dhcp4/parser_context.cc
index a48bec015a..75cc71e0f1 100644
--- a/src/bin/dhcp4/parser_context.cc
+++ b/src/bin/dhcp4/parser_context.cc
@@ -174,8 +174,8 @@ Parser4Context::contextName()
return ("server-id");
case CONTROL_SOCKET:
return ("control-socket");
- case QUEUE_CONTROL:
- return ("queue-control");
+ case DHCP_QUEUE_CONTROL:
+ return ("dhcp-queue-control");
case POOLS:
return ("pools");
case RESERVATIONS:
diff --git a/src/bin/dhcp4/parser_context.h b/src/bin/dhcp4/parser_context.h
index cc99b86f85..85f262e012 100644
--- a/src/bin/dhcp4/parser_context.h
+++ b/src/bin/dhcp4/parser_context.h
@@ -267,8 +267,8 @@ public:
/// Used while parsing Dhcp4/control-socket structures.
CONTROL_SOCKET,
- /// Used while parsing Dhcp4/queue-control structures.
- QUEUE_CONTROL,
+ /// Used while parsing Dhcp4/dhcp-queue-control structures.
+ DHCP_QUEUE_CONTROL,
/// Used while parsing Dhcp4/subnet4/pools structures.
POOLS,
diff --git a/src/bin/dhcp4/tests/config_parser_unittest.cc b/src/bin/dhcp4/tests/config_parser_unittest.cc
index 431b2ce016..2ef77376a8 100644
--- a/src/bin/dhcp4/tests/config_parser_unittest.cc
+++ b/src/bin/dhcp4/tests/config_parser_unittest.cc
@@ -299,7 +299,11 @@ public:
void configure(std::string config, int expected_code,
std::string exp_error = "") {
ConstElementPtr json;
- ASSERT_NO_THROW(json = parseDHCP4(config, true));
+ try {
+ json = parseDHCP4(config, true);
+ } catch(const std::exception& ex) {
+ ADD_FAILURE() << "parseDHCP4 failed: " << ex.what();
+ }
ConstElementPtr status;
EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json));
@@ -6337,61 +6341,86 @@ TEST_F(Dhcp4ParserTest, serverTag) {
ASSERT_THROW(parseDHCP4(bad_tag), std::exception);
}
-// Check whether it is possible to configure server-tag
-TEST_F(Dhcp4ParserTest, queueControl) {
- // Config without server-tag
- string config_no_queue = "{ " + genIfaceConfig() + "," +
- "\"subnet4\": [ ] "
- "}";
-
- string config_with_queue =
- "{ " + genIfaceConfig() + ", \n" +
- " \"subnet4\": [ ], \n"
- " \"queue-control\": { \n"
- " \"queue-type\": \"some-type\", \n"
- " \"capacity\": 75 \n"
- " } \n"
- "} \n";
+// Check whether it is possible to configure packet queue
+TEST_F(Dhcp4ParserTest, dhcpQueueControl) {
+ struct Scenario {
+ std::string description_;
+ std::string json_;
+ };
- string config_with_context =
- "{ " + genIfaceConfig() + ", \n" +
- " \"subnet4\": [ ], \n"
- " \"queue-control\": { \n"
+ std::vector<Scenario> scenarios = {
+ {
+ "no entry",
+ ""
+ },
+ {
+ "valid entry",
+ "{ \n"
+ " \"queue-type\": \"some-type\", \n"
+ " \"capacity\": 75 \n"
+ "} \n"
+ },
+ {
+ "valid arbitrary content",
+ "{ \n"
" \"queue-type\": \"some-type\", \n"
" \"capacity\": 90, \n"
- " \"user-context\": { \"comment\": \"some text\" } \n"
- " } \n"
- "} \n";
+ " \"user-context\": { \"comment\": \"some text\" },\n"
+ " \"random-bool\" : false, \n"
+ " \"random-int\" : 1234 \n"
+ "} \n"
+ }
+ };
// Let's check the default. It should be empty.
data::ConstElementPtr control;
- control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
+ control = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl();
ASSERT_FALSE(control);
- // Configuration with no queue should default to an emtpy control.
- configure(config_no_queue, CONTROL_RESULT_SUCCESS, "");
- control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
- ASSERT_FALSE(control);
+ // Iterate over the incorrect scenarios and verify they
+ // fail as expected. Note, we use parseDHCP4() directly
+ // as all of the errors above are enforced by the grammar.
+ data::ConstElementPtr exp_elems;
+ for (auto scenario : scenarios) {
+ SCOPED_TRACE(scenario.description_);
+ {
+ // Clear the config
+ CfgMgr::instance().clear();
- // Clear the config
- CfgMgr::instance().clear();
+ // Construct the config JSON
+ std::stringstream os;
+ os << "{ " + genIfaceConfig();
+ if (!scenario.json_.empty()) {
- // Configuration with queue should be valid.
- configure(config_with_queue, CONTROL_RESULT_SUCCESS, "");
- control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
- ASSERT_TRUE(control);
+ os << ",\n \"dhcp-queue-control\": " << scenario.json_;
+ }
- // Clear the config
- CfgMgr::instance().clear();
+ os << "} \n";
+
+ // Configure the server. This should succeed.
+ configure(os.str(), CONTROL_RESULT_SUCCESS, "");
+
+ // Fetch the queue control info.
+ control = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl();
- // Configuration with queue with context should be valid.
- configure(config_with_context, CONTROL_RESULT_SUCCESS, "");
- control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
- ASSERT_TRUE(control);
+ // If JSON does not contain queue control,
+ // the pointer stored in staging should be empty.
+ if (scenario.json_.empty()) {
+ ASSERT_FALSE(control);
+ continue;
+ }
+
+ // Make sure the staged config is correct.
+ ASSERT_TRUE(control);
+ ASSERT_NO_THROW(exp_elems = Element::fromJSON(scenario.json_))
+ << " cannot convert expected JSON, test is broken";
+ EXPECT_TRUE(control->equals(*exp_elems));
+ }
+ }
}
-// Check whether it is possible to configure server-tag
-TEST_F(Dhcp4ParserTest, queueControlInvalid) {
+// Check that we catch invalid dhcp-queue-control content
+TEST_F(Dhcp4ParserTest, dhcpQueueControlInvalid) {
struct Scenario {
std::string description_;
std::string json_;
@@ -6402,14 +6431,14 @@ TEST_F(Dhcp4ParserTest, queueControlInvalid) {
"not a map",
"{ " + genIfaceConfig() + ", \n" +
" \"subnet4\": [ ], \n"
- " \"queue-control\": 75 \n"
+ " \"dhcp-queue-control\": 75 \n"
"} \n"
},
{
"queue type missing",
"{ " + genIfaceConfig() + ", \n" +
" \"subnet4\": [ ], \n"
- " \"queue-control\": { \n"
+ " \"dhcp-queue-control\": { \n"
" \"capacity\": 100 \n"
" } \n"
"} \n"
@@ -6420,9 +6449,9 @@ TEST_F(Dhcp4ParserTest, queueControlInvalid) {
// fail as expected. Note, we use parseDHCP4() directly
// as all of the errors above are enforced by the grammar.
for (auto scenario : scenarios) {
- SCOPED_TRACE((scenario).description_);
+ SCOPED_TRACE(scenario.description_);
{
- EXPECT_THROW(parseDHCP4((scenario).json_), Dhcp4ParseError);
+ EXPECT_THROW(parseDHCP4(scenario.json_), Dhcp4ParseError);
}
}
}
diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.cc b/src/bin/dhcp6/ctrl_dhcp6_srv.cc
index 599b7be486..a7241c1170 100644
--- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc
+++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc
@@ -653,10 +653,10 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) {
return (isc::config::createAnswer(1, err.str()));
}
- // Configure packet queue
+ // Configure DHCP packet queue
try {
data::ConstElementPtr qc;
- qc = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
+ qc = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl();
if (!qc) {
// @todo For now we're manually constructing default queue config
// This probably needs to be built into the PQM?
@@ -673,7 +673,7 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) {
} catch (const std::exception& ex) {
std::ostringstream err;
- err << "Error setting packet queue controls after server reconfiguration: "
+ err << "Error setting DHCP packet queue controls after server reconfiguration: "
<< ex.what();
return (isc::config::createAnswer(1, err.str()));
}
diff --git a/src/bin/dhcp6/dhcp6_lexer.cc b/src/bin/dhcp6/dhcp6_lexer.cc
index 797da7d36c..48ce1d5fef 100644
--- a/src/bin/dhcp6/dhcp6_lexer.cc
+++ b/src/bin/dhcp6/dhcp6_lexer.cc
@@ -700,7 +700,7 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[1458] =
+static const flex_int16_t yy_accept[1460] =
{ 0,
172, 172, 0, 0, 0, 0, 0, 0, 0, 0,
180, 178, 10, 11, 178, 1, 172, 169, 172, 172,
@@ -732,136 +732,136 @@ static const flex_int16_t yy_accept[1458] =
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, 0, 0, 0, 0, 177,
- 175, 0, 174, 173, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 177, 175,
+ 0, 174, 173, 0, 0, 0, 0, 0, 0, 0,
- 0, 138, 0, 0, 29, 0, 28, 0, 0, 101,
- 0, 0, 0, 0, 0, 0, 0, 0, 54, 0,
+ 138, 0, 0, 29, 0, 28, 0, 0, 101, 0,
+ 0, 0, 0, 0, 0, 0, 0, 54, 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, 0, 0, 0, 0, 99, 0, 0,
+ 0, 0, 0, 0, 0, 0, 99, 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, 0, 0, 0, 0, 0, 0, 0, 176,
+ 0, 0, 0, 0, 0, 0, 0, 176, 173, 0,
- 173, 0, 0, 0, 0, 0, 0, 0, 0, 30,
- 0, 0, 32, 0, 0, 0, 0, 0, 102, 0,
- 0, 0, 0, 0, 0, 80, 0, 0, 0, 0,
- 0, 0, 123, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 57, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
+ 32, 0, 0, 0, 0, 0, 102, 0, 0, 0,
+ 0, 0, 0, 80, 0, 0, 0, 0, 0, 0,
+ 123, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 57, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 79, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 89, 0, 58,
+ 0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 89, 0, 58, 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, 118, 143,
- 50, 0, 55, 0, 0, 0, 0, 0, 0, 158,
- 38, 0, 35, 0, 34, 0, 0, 0, 131, 0,
+ 0, 0, 0, 0, 0, 118, 143, 50, 0, 55,
+ 0, 0, 0, 0, 0, 0, 158, 38, 0, 35,
+ 0, 34, 0, 0, 0, 131, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 110, 0,
- 0, 0, 0, 0, 0, 0, 142, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 110, 0, 0, 0,
+ 0, 0, 0, 0, 142, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 0, 0, 33, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 82, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 132, 0,
+ 52, 0, 0, 33, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 82, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 132, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 127, 0,
+ 0, 0, 0, 0, 0, 7, 36, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 127, 0, 0, 0, 0, 0, 0, 7, 36,
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, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 112, 0, 0, 0,
- 0, 0, 0, 109, 0, 0, 0, 0, 0, 0,
- 0, 0, 84, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 112, 0, 0, 0, 0, 0,
+ 0, 109, 0, 0, 0, 0, 0, 0, 0, 0,
+ 84, 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, 92, 0, 0, 0,
- 0, 0, 0, 0, 0, 106, 0, 0, 0, 0,
- 0, 91, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 126,
+ 0, 0, 0, 92, 0, 0, 0, 0, 0, 0,
+ 0, 0, 106, 0, 0, 0, 0, 0, 91, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 126, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 136, 107, 0, 0, 0,
- 0, 111, 51, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 59, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 136, 107, 0, 0, 0, 0, 111,
+ 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 59, 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, 75, 0, 0, 0, 0, 0, 0,
- 159, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 98, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 125, 0,
- 0, 0, 0, 0, 0, 62, 0, 0, 0, 0,
+ 75, 0, 0, 0, 0, 0, 0, 159, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 98, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 125, 0, 0, 0,
+ 0, 0, 0, 62, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 56, 83, 0, 0, 0, 122, 0, 0,
- 0, 0, 49, 0, 0, 0, 0, 0, 0, 0,
+ 56, 83, 0, 0, 0, 122, 0, 0, 0, 49,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 114, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 157, 0, 0, 0, 0, 0,
+ 0, 157, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 93, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 93, 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, 41, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
- 0, 137, 14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 41, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 16, 0, 137, 14,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 128, 113, 0, 0, 0, 0,
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 124, 141, 0, 40, 0, 133, 0, 0, 0,
- 0, 0, 0, 0, 0, 20, 0, 0, 0, 77,
- 0, 0, 0, 0, 135, 53, 0, 85, 0, 0,
+ 0, 128, 113, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 124,
+ 141, 0, 40, 0, 133, 0, 0, 0, 0, 0,
+ 0, 0, 0, 20, 0, 0, 0, 77, 0, 0,
+ 0, 0, 135, 53, 0, 85, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 74, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 81, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 130, 0,
+ 0, 74, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 81, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 130, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 103, 0, 0, 0, 0,
-
- 0, 78, 100, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 71, 0, 0, 0, 0,
- 0, 0, 17, 15, 0, 155, 154, 0, 66, 0,
- 0, 0, 0, 0, 31, 0, 117, 0, 0, 0,
- 0, 0, 0, 0, 0, 152, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 94, 0, 121,
- 43, 0, 60, 0, 0, 0, 0, 19, 0, 0,
- 0, 0, 0, 0, 0, 96, 72, 0, 0, 129,
- 0, 0, 0, 0, 0, 120, 0, 0, 0, 0,
- 90, 0, 160, 0, 0, 0, 0, 0, 0, 0,
-
- 0, 0, 88, 0, 144, 0, 0, 0, 0, 0,
+ 0, 0, 0, 103, 0, 0, 0, 0, 0, 78,
+
+ 100, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 71, 0, 0, 0, 0, 0, 0, 17,
+ 15, 0, 155, 154, 0, 66, 0, 0, 0, 0,
+ 0, 31, 0, 117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 152, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 94, 0, 121, 43, 0,
+ 60, 0, 0, 0, 0, 19, 0, 0, 0, 0,
+ 0, 0, 96, 72, 0, 0, 129, 0, 0, 0,
+ 0, 0, 120, 0, 0, 0, 0, 90, 0, 160,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,
+
+ 0, 0, 144, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 156, 0, 0, 0,
- 0, 0, 0, 0, 42, 0, 65, 0, 0, 0,
- 0, 115, 47, 0, 0, 67, 153, 0, 12, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 45, 0,
- 0, 44, 18, 0, 0, 0, 0, 108, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 70, 0, 0, 0, 61, 0, 86, 0, 0,
- 0, 0, 0, 134, 0, 0, 0, 46, 0, 0,
+ 0, 42, 0, 65, 0, 0, 0, 0, 115, 47,
+ 0, 0, 67, 153, 0, 0, 12, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 45, 0, 0, 44,
+ 18, 0, 0, 0, 0, 108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
+ 0, 0, 0, 61, 0, 0, 86, 0, 0, 0,
+ 0, 0, 134, 0, 0, 0, 46, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 64, 0, 0, 76, 0, 37, 0, 48, 0,
+ 64, 0, 0, 76, 0, 37, 0, 48, 0, 0,
0, 0, 0, 25, 0, 0, 0, 0, 0, 0,
150, 0, 119, 0, 0, 0, 0, 0, 0, 0,
0, 0, 97, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 26, 39, 0, 0, 0, 0, 0, 13,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 149, 0, 0, 22, 69, 0,
- 0, 0, 0, 0, 0, 21, 0, 87, 0, 0,
- 148, 0, 0, 68, 0, 0, 63, 0, 24, 0,
+ 0, 0, 0, 26, 39, 0, 0, 0, 0, 0,
+ 13, 0, 0, 0, 0, 0, 0, 0, 0, 156,
+ 0, 0, 0, 0, 0, 0, 149, 0, 0, 22,
+ 69, 0, 0, 0, 0, 0, 0, 21, 0, 87,
+ 0, 0, 148, 0, 0, 68, 0, 0, 63, 0,
+ 24, 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, 23, 0, 104, 116,
- 0, 0, 0, 0, 0, 0, 146, 151, 73, 0,
- 0, 0, 0, 145, 0, 0, 27, 0, 0, 0,
- 0, 0, 105, 0, 0, 147, 0
+ 0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
+ 104, 116, 0, 0, 0, 0, 0, 0, 146, 151,
+ 73, 0, 0, 0, 0, 145, 0, 0, 27, 0,
+ 0, 0, 0, 0, 105, 0, 0, 147, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -908,353 +908,355 @@ static const YY_CHAR yy_meta[72] =
3
} ;
-static const flex_int16_t yy_base[1470] =
+static const flex_int16_t yy_base[1472] =
{ 0,
0, 70, 19, 29, 41, 49, 52, 58, 87, 95,
- 1822, 1823, 32, 1818, 141, 0, 201, 1823, 206, 88,
- 11, 213, 1823, 1800, 114, 25, 2, 6, 1823, 1823,
- 73, 11, 17, 1823, 1823, 1823, 104, 1806, 1761, 0,
- 1798, 107, 1813, 217, 241, 1823, 185, 1757, 1763, 1783,
+ 1825, 1826, 32, 1821, 141, 0, 201, 1826, 206, 88,
+ 11, 213, 1826, 1803, 114, 25, 2, 6, 1826, 1826,
+ 73, 11, 17, 1826, 1826, 1826, 104, 1809, 1764, 0,
+ 1801, 107, 1816, 217, 241, 1826, 185, 1760, 1766, 1786,
93, 58, 190, 91, 211, 200, 14, 267, 213, 175,
- 269, 64, 231, 1764, 187, 75, 1763, 274, 188, 290,
- 278, 297, 1746, 195, 302, 316, 316, 1765, 0, 355,
- 360, 372, 377, 380, 1823, 0, 1823, 267, 295, 296,
- 327, 283, 361, 368, 293, 1823, 1762, 1801, 1823, 359,
-
- 1823, 393, 341, 1749, 1759, 1798, 369, 220, 249, 1753,
- 364, 372, 373, 380, 385, 1796, 0, 444, 375, 1740,
- 1748, 364, 1744, 1733, 1734, 372, 1750, 1733, 1742, 399,
- 200, 371, 1736, 389, 1724, 1780, 416, 1727, 1778, 1720,
- 1743, 1740, 1740, 1734, 369, 1727, 1720, 1725, 1719, 409,
- 1730, 1723, 1714, 1713, 1727, 387, 1763, 1712, 414, 1724,
- 270, 1712, 441, 1713, 416, 1725, 1722, 1723, 1721, 394,
- 1703, 1708, 1704, 1696, 1713, 1705, 0, 421, 385, 436,
- 437, 449, 454, 1704, 1823, 0, 461, 1695, 1698, 1823,
- 446, 464, 1823, 1750, 1705, 470, 1748, 472, 1747, 476,
-
- 1746, 1823, 520, 1745, 486, 1706, 1701, 1700, 1691, 460,
- 1740, 1734, 1700, 1679, 1687, 1693, 1681, 1695, 1691, 1692,
- 1692, 1687, 1679, 1681, 1665, 1669, 1682, 1682, 1674, 1664,
- 1667, 1681, 1823, 1667, 1675, 1678, 1659, 1658, 1708, 1657,
- 1667, 1705, 508, 1666, 1654, 1665, 1701, 489, 1705, 1642,
- 1657, 9, 1647, 1663, 1644, 1646, 1642, 1648, 1639, 1638,
- 1651, 1644, 1634, 1645, 1649, 1648, 1642, 80, 1649, 1644,
- 1636, 1626, 1641, 1636, 1640, 1621, 1637, 1623, 1629, 1636,
- 1624, 348, 1617, 1631, 1630, 1633, 1615, 1623, 490, 1823,
- 1823, 491, 1823, 1823, 1610, 0, 472, 1612, 532, 501,
-
- 1666, 1823, 1619, 489, 1823, 1664, 1823, 1658, 560, 1823,
- 485, 1600, 1610, 1660, 1617, 1612, 1615, 466, 1823, 1613,
- 1655, 1610, 1607, 1608, 337, 1612, 1650, 1600, 1595, 1592,
- 1588, 1590, 1639, 1598, 1587, 1636, 1584, 566, 1597, 1597,
- 1580, 1581, 1594, 1581, 1591, 1586, 1593, 1588, 1573, 452,
- 1582, 1585, 1580, 1576, 1624, 502, 496, 1823, 1618, 1570,
- 1569, 1562, 1564, 1568, 1557, 1564, 1569, 525, 1614, 1569,
- 480, 1566, 1569, 1569, 1567, 1556, 1556, 1568, 497, 1543,
- 1544, 1565, 507, 1547, 1544, 1558, 1557, 1543, 1555, 1554,
- 1553, 1552, 206, 1593, 1592, 1591, 1535, 582, 1548, 1823,
-
- 1823, 1547, 0, 518, 1535, 1586, 1585, 1543, 1583, 1823,
- 1531, 1581, 1823, 559, 615, 528, 1580, 1522, 1823, 1527,
- 1533, 1536, 1535, 1522, 1521, 1823, 1523, 1520, 1532, 1528,
- 1516, 1518, 1823, 1524, 1509, 1511, 1522, 1520, 1515, 586,
- 1522, 1504, 1553, 1823, 1502, 1518, 1550, 1554, 1512, 1506,
- 1508, 1509, 1511, 1543, 1496, 1491, 1490, 1492, 1485, 1500,
- 1478, 1485, 1490, 1538, 1823, 1485, 1481, 1535, 1488, 1482,
- 1489, 1474, 1484, 1487, 1476, 1475, 1470, 1823, 1525, 1823,
- 1469, 1468, 1461, 1478, 1515, 1514, 1461, 1466, 1475, 1469,
- 1463, 1472, 588, 1507, 1471, 1454, 1454, 1449, 1445, 1451,
-
- 1450, 1458, 1462, 1445, 1501, 1443, 1457, 1446, 1823, 1823,
- 1823, 1446, 1823, 1456, 1490, 1452, 0, 1493, 1443, 1823,
- 1823, 1440, 1823, 1446, 1823, 540, 563, 589, 1823, 1484,
- 1431, 1482, 1429, 1428, 1435, 1428, 1440, 1439, 1423, 1438,
- 1468, 1435, 1471, 1417, 1419, 1431, 1431, 1430, 1823, 1415,
- 1412, 1426, 1418, 1424, 1415, 1423, 1823, 1408, 1419, 1423,
- 1405, 1419, 532, 1401, 1395, 1400, 1397, 1412, 1413, 1410,
- 1451, 1408, 1823, 1394, 1396, 1823, 1404, 1441, 1440, 604,
- 1403, 1386, 1387, 1392, 1383, 1823, 1397, 1383, 606, 1375,
- 1396, 1395, 1392, 1384, 1427, 1381, 1388, 1424, 1823, 1372,
-
- 1370, 1384, 1368, 1382, 1385, 1417, 1416, 1415, 1362, 1413,
- 1412, 1823, 595, 1374, 1374, 1372, 1361, 1363, 1823, 1823,
- 1406, 1354, 1409, 579, 577, 551, 1368, 1407, 573, 1401,
- 1400, 1399, 1353, 1343, 1396, 1358, 1348, 1393, 1356, 1338,
- 1346, 1348, 1352, 1387, 1391, 1348, 1347, 1348, 1341, 1330,
- 1343, 1346, 1341, 1336, 1341, 1338, 1337, 1333, 1339, 1334,
- 1375, 1374, 1318, 1314, 505, 1371, 1823, 1370, 1319, 1311,
- 1362, 1325, 1312, 1823, 1312, 1321, 1320, 1320, 1304, 1359,
- 1302, 1315, 1823, 1307, 1299, 1308, 1301, 1300, 1311, 1288,
- 1292, 1343, 1307, 1289, 1287, 1298, 1338, 1337, 1336, 1283,
-
- 1299, 563, 592, 1276, 1286, 564, 1823, 1336, 1282, 1292,
- 1292, 1281, 1285, 1292, 1329, 1823, 1323, 609, 1276, 1284,
- 1276, 1823, 1272, 1285, 1265, 1268, 1264, 1281, 1276, 0,
- 77, 64, 182, 361, 373, 419, 463, 615, 577, 1823,
- 587, 587, 580, 600, 598, 642, 586, 588, 604, 608,
- 595, 652, 617, 603, 606, 1823, 1823, 622, 621, 626,
- 615, 1823, 1823, 629, 616, 614, 632, 619, 619, 668,
- 620, 676, 677, 1823, 624, 638, 638, 681, 631, 632,
- 634, 628, 686, 641, 631, 632, 628, 638, 642, 653,
- 637, 655, 650, 652, 645, 647, 659, 649, 664, 703,
-
- 662, 667, 644, 1823, 669, 659, 704, 653, 668, 669,
- 1823, 688, 696, 676, 666, 680, 668, 663, 675, 670,
- 671, 667, 676, 671, 722, 728, 677, 1823, 689, 674,
- 690, 680, 692, 686, 731, 699, 684, 685, 1823, 702,
- 705, 688, 690, 746, 691, 1823, 708, 711, 691, 710,
- 748, 708, 704, 699, 717, 716, 702, 717, 709, 705,
- 723, 708, 1823, 1823, 716, 761, 716, 1823, 724, 712,
- 720, 771, 1823, 722, 727, 770, 723, 724, 736, 730,
- 734, 732, 730, 741, 784, 730, 786, 787, 733, 745,
- 1823, 733, 741, 739, 744, 756, 740, 754, 755, 756,
-
- 772, 777, 751, 762, 748, 748, 768, 757, 762, 769,
- 810, 811, 760, 764, 1823, 759, 777, 774, 812, 763,
- 781, 782, 768, 776, 785, 765, 780, 787, 829, 830,
- 1823, 785, 832, 833, 786, 796, 798, 782, 783, 790,
- 799, 842, 791, 790, 807, 846, 798, 802, 800, 798,
- 851, 852, 804, 854, 850, 801, 811, 1823, 816, 809,
- 800, 819, 813, 808, 818, 815, 820, 816, 828, 1823,
- 812, 1823, 1823, 813, 871, 812, 831, 832, 830, 815,
- 836, 818, 823, 830, 863, 854, 826, 885, 830, 832,
- 849, 847, 839, 843, 1823, 1823, 853, 851, 837, 838,
-
- 896, 851, 856, 843, 854, 846, 852, 848, 866, 868,
- 869, 1823, 1823, 867, 1823, 869, 1823, 854, 856, 875,
- 865, 915, 870, 912, 878, 1823, 870, 862, 921, 1823,
- 922, 871, 878, 920, 1823, 1823, 880, 1823, 871, 876,
- 872, 875, 889, 894, 877, 888, 935, 894, 895, 896,
- 934, 892, 941, 942, 1823, 891, 944, 945, 887, 947,
- 908, 892, 904, 894, 924, 953, 913, 1823, 955, 904,
- 919, 906, 902, 918, 923, 911, 963, 922, 1823, 924,
- 923, 925, 918, 927, 928, 925, 915, 918, 918, 975,
- 924, 977, 978, 923, 981, 1823, 919, 934, 927, 985,
-
- 940, 1823, 1823, 936, 946, 931, 949, 935, 945, 995,
- 996, 943, 953, 1000, 959, 1823, 951, 951, 953, 955,
- 1006, 951, 1823, 1823, 953, 1823, 1823, 967, 1823, 961,
- 1011, 962, 1013, 995, 1823, 973, 1823, 960, 968, 962,
- 961, 964, 964, 965, 1023, 1823, 968, 1025, 980, 971,
- 986, 986, 989, 989, 986, 1028, 992, 1823, 984, 1823,
- 1823, 994, 1823, 996, 997, 994, 1036, 1823, 987, 987,
- 993, 992, 1004, 1004, 1048, 1823, 1823, 1044, 993, 1823,
- 1010, 995, 995, 997, 1003, 1823, 1056, 1009, 1058, 1021,
- 1823, 1018, 1823, 1037, 1057, 1063, 1064, 1023, 1009, 1067,
-
- 1068, 1023, 1823, 1070, 1823, 1010, 1067, 1032, 1028, 1070,
- 1020, 1025, 1023, 1080, 1038, 1082, 1083, 1046, 1035, 1029,
- 1045, 1089, 1033, 1050, 1035, 1050, 1823, 1034, 1090, 1091,
- 1092, 1041, 1094, 1059, 1823, 1045, 1823, 1056, 1103, 1075,
- 1062, 1823, 1823, 1050, 1107, 1823, 1823, 1056, 1823, 1109,
- 1057, 1106, 1051, 1056, 1115, 1065, 1075, 1076, 1823, 1119,
- 1074, 1823, 1823, 1065, 1080, 1068, 1083, 1823, 1120, 1088,
- 1081, 1082, 1091, 1073, 1079, 1082, 1134, 1095, 1095, 1138,
- 1089, 1823, 1140, 1087, 1142, 1823, 1092, 1823, 1095, 1090,
- 1089, 1147, 1102, 1823, 1144, 1097, 1094, 1823, 1108, 1111,
-
- 1154, 1109, 1156, 1099, 1101, 1109, 1099, 1115, 1116, 1110,
- 1126, 1823, 1116, 1166, 1823, 1162, 1823, 1127, 1823, 1164,
- 1128, 1119, 1126, 1823, 1123, 1128, 1126, 1176, 1177, 1122,
- 1823, 1137, 1823, 1127, 1139, 1140, 1183, 1127, 1135, 1129,
- 1137, 1150, 1823, 1149, 1139, 1138, 1141, 1153, 1144, 1153,
- 1155, 1159, 1823, 1823, 1198, 1143, 1159, 1201, 1202, 1823,
- 1198, 1162, 1159, 1164, 1151, 1146, 1209, 1168, 1211, 1170,
- 1171, 1214, 1173, 1176, 1823, 1217, 1180, 1823, 1823, 1162,
- 1220, 1169, 1222, 1167, 1184, 1823, 1170, 1823, 1170, 1172,
- 1823, 1177, 1187, 1823, 1173, 1185, 1823, 1181, 1823, 1191,
-
- 1185, 1189, 1180, 1232, 1181, 1189, 1198, 1191, 1186, 1187,
- 1202, 1193, 1200, 1187, 1202, 1207, 1250, 1209, 1252, 1253,
- 1198, 1214, 1205, 1219, 1215, 1208, 1823, 1260, 1823, 1823,
- 1261, 1262, 1219, 1218, 1219, 1209, 1823, 1823, 1823, 1267,
- 1211, 1227, 1270, 1823, 1266, 1217, 1823, 1216, 1218, 1229,
- 1276, 1227, 1823, 1236, 1279, 1823, 1823, 1285, 1290, 1295,
- 1300, 1305, 1310, 1315, 1318, 1292, 1297, 1299, 1312
+ 269, 64, 231, 1767, 187, 75, 1766, 274, 188, 290,
+ 278, 297, 1749, 195, 302, 316, 316, 1768, 0, 355,
+ 360, 372, 377, 380, 1826, 0, 1826, 267, 295, 296,
+ 327, 283, 361, 368, 293, 1826, 1765, 1804, 1826, 359,
+
+ 1826, 393, 341, 1752, 1762, 1801, 369, 220, 249, 1756,
+ 364, 372, 373, 380, 385, 1799, 0, 444, 375, 1743,
+ 1751, 364, 1747, 1736, 1737, 372, 1753, 1736, 1745, 399,
+ 200, 371, 1739, 389, 1727, 1783, 416, 1730, 1781, 1723,
+ 1746, 1743, 1743, 1737, 369, 1730, 1723, 1728, 1722, 409,
+ 1733, 1726, 1717, 1716, 1730, 387, 1766, 1715, 414, 1727,
+ 1730, 1714, 441, 1715, 416, 1727, 1724, 1725, 1723, 394,
+ 1705, 1710, 1706, 1698, 1715, 1707, 0, 421, 385, 436,
+ 437, 449, 454, 1706, 1826, 0, 461, 1697, 1700, 1826,
+ 446, 464, 1826, 1752, 1707, 470, 1750, 472, 1749, 476,
+
+ 1748, 1826, 520, 1747, 486, 1708, 1703, 1702, 1693, 460,
+ 1742, 1736, 1702, 1681, 1689, 1695, 1683, 1697, 1693, 1694,
+ 1694, 1689, 1681, 1683, 1667, 1671, 1684, 1684, 1676, 1666,
+ 1669, 1683, 1826, 1669, 1677, 1680, 1661, 1660, 1710, 1659,
+ 1669, 1707, 508, 1668, 1656, 1667, 1703, 489, 1707, 1644,
+ 1659, 9, 1649, 1665, 1646, 1648, 1644, 1650, 1641, 1640,
+ 1653, 1646, 1648, 1652, 1651, 1645, 80, 1652, 1647, 1639,
+ 1629, 1644, 1639, 1643, 1624, 1640, 1626, 1632, 1639, 1627,
+ 348, 1620, 1634, 1633, 1636, 1618, 1626, 490, 1826, 1826,
+ 491, 1826, 1826, 1613, 0, 472, 1615, 532, 501, 1669,
+
+ 1826, 1622, 489, 1826, 1667, 1826, 1661, 560, 1826, 485,
+ 1603, 1613, 1663, 1620, 1615, 1618, 466, 1826, 1616, 1658,
+ 1613, 1610, 1611, 303, 1615, 1653, 1603, 1598, 1595, 1591,
+ 1593, 1642, 1601, 1590, 1639, 1587, 566, 1600, 1600, 1583,
+ 1584, 1597, 1584, 1594, 1589, 1596, 1591, 1576, 452, 1585,
+ 1588, 1583, 1579, 1627, 502, 496, 1826, 1621, 1573, 1572,
+ 1565, 1567, 1571, 1560, 1567, 1572, 525, 1617, 1572, 300,
+ 1569, 1573, 1571, 1560, 1560, 1572, 471, 1547, 1548, 1569,
+ 506, 1551, 1548, 1562, 1561, 1547, 1559, 1558, 1557, 1556,
+ 206, 1597, 1596, 1595, 1539, 549, 1552, 1826, 1826, 1551,
+
+ 0, 518, 1539, 1590, 1589, 1547, 1587, 1826, 1535, 1585,
+ 1826, 558, 615, 529, 1584, 1526, 1826, 1531, 1537, 1540,
+ 1539, 1526, 1525, 1826, 1527, 1524, 1536, 532, 1521, 1523,
+ 1826, 1529, 1514, 1516, 1527, 1525, 1520, 583, 1527, 1509,
+ 1558, 1826, 1507, 1523, 1555, 1559, 1517, 1511, 1513, 1514,
+ 1516, 1548, 1501, 1496, 1495, 1497, 1490, 1505, 1483, 1490,
+ 1495, 1543, 1826, 1490, 1486, 1540, 1493, 1487, 1494, 1479,
+ 1489, 1492, 1481, 1480, 1475, 1826, 1530, 1826, 1474, 1473,
+ 1466, 1483, 1520, 1467, 1472, 1481, 1475, 1469, 1478, 587,
+ 1513, 1477, 1460, 1460, 1455, 1451, 1457, 1456, 1464, 1468,
+
+ 1451, 1507, 1449, 1463, 1452, 1826, 1826, 1826, 1452, 1826,
+ 1462, 1496, 1458, 0, 1499, 1449, 1826, 1826, 1446, 1826,
+ 1452, 1826, 564, 538, 590, 1826, 1490, 1437, 1488, 1435,
+ 1434, 1441, 1434, 1446, 1445, 1429, 1444, 1426, 1473, 1440,
+ 1476, 1422, 1424, 1436, 1436, 1435, 1826, 1420, 1417, 1431,
+ 1423, 1429, 1420, 1428, 1826, 1413, 1424, 1428, 1410, 1424,
+ 556, 1406, 1400, 1405, 1402, 1417, 1418, 1415, 1456, 1413,
+ 1826, 1399, 1401, 1826, 1409, 1446, 1445, 519, 1408, 1391,
+ 1392, 1397, 1388, 1826, 1402, 1388, 605, 1380, 1401, 1398,
+ 1390, 1433, 1387, 1394, 1430, 1826, 1378, 1376, 1390, 1374,
+
+ 1388, 1391, 1423, 1422, 1421, 1368, 1419, 1418, 1826, 594,
+ 1380, 1380, 1378, 1367, 1369, 1826, 1826, 1412, 1360, 1415,
+ 562, 587, 562, 1374, 1413, 572, 1407, 1406, 1405, 1359,
+ 1349, 1402, 1364, 1354, 1362, 1398, 1361, 1343, 1351, 1353,
+ 1357, 1392, 1396, 1353, 1352, 1353, 1346, 1335, 1348, 1351,
+ 1346, 1341, 1346, 1343, 1342, 1338, 1344, 1339, 1380, 1379,
+ 1323, 1319, 587, 1376, 1826, 1375, 1324, 1316, 1367, 1330,
+ 1317, 1826, 1317, 1326, 1325, 1325, 1309, 1364, 1307, 1320,
+ 1826, 1312, 1304, 1313, 1306, 1317, 1294, 1298, 1349, 1313,
+ 1295, 1293, 1304, 1344, 1343, 1342, 1289, 1305, 561, 591,
+
+ 1282, 1292, 564, 1826, 1342, 1288, 1298, 1298, 1287, 1291,
+ 1298, 1335, 1826, 1329, 610, 1282, 1290, 1282, 1826, 1278,
+ 1291, 1271, 1274, 1270, 1287, 1282, 1270, 1281, 1265, 60,
+ 67, 235, 308, 388, 401, 548, 523, 1826, 580, 585,
+ 578, 589, 598, 641, 585, 587, 603, 607, 594, 651,
+ 610, 602, 605, 1826, 1826, 621, 620, 625, 613, 1826,
+ 1826, 627, 615, 613, 631, 618, 618, 667, 619, 675,
+ 676, 1826, 623, 637, 637, 680, 630, 632, 626, 684,
+ 639, 629, 630, 626, 636, 640, 651, 635, 653, 648,
+ 650, 643, 645, 657, 647, 662, 701, 660, 665, 642,
+
+ 1826, 667, 657, 702, 651, 666, 667, 1826, 686, 694,
+ 674, 664, 678, 666, 661, 673, 668, 669, 665, 674,
+ 669, 720, 726, 685, 676, 1826, 688, 673, 689, 679,
+ 691, 685, 730, 699, 683, 685, 1826, 701, 704, 687,
+ 689, 745, 690, 1826, 707, 710, 690, 709, 747, 707,
+ 703, 698, 716, 715, 701, 716, 708, 704, 722, 707,
+ 1826, 1826, 715, 760, 715, 1826, 723, 718, 769, 1826,
+ 720, 725, 767, 721, 722, 734, 728, 732, 730, 728,
+ 739, 782, 728, 784, 785, 731, 743, 1826, 731, 739,
+ 737, 742, 754, 738, 752, 753, 754, 770, 775, 749,
+
+ 759, 746, 746, 766, 755, 760, 767, 808, 809, 758,
+ 762, 1826, 807, 758, 776, 773, 811, 762, 780, 781,
+ 767, 775, 784, 764, 779, 788, 828, 829, 1826, 784,
+ 831, 832, 785, 795, 797, 781, 782, 789, 798, 841,
+ 790, 789, 806, 845, 797, 801, 799, 797, 850, 851,
+ 803, 853, 849, 809, 1826, 814, 807, 798, 817, 811,
+ 806, 816, 813, 818, 814, 826, 1826, 810, 1826, 1826,
+ 811, 869, 810, 829, 830, 827, 813, 834, 816, 821,
+ 828, 861, 852, 824, 883, 828, 830, 847, 845, 837,
+ 841, 1826, 1826, 851, 849, 852, 836, 837, 895, 850,
+
+ 855, 842, 853, 845, 851, 847, 866, 867, 868, 1826,
+ 1826, 866, 1826, 868, 1826, 854, 855, 874, 864, 914,
+ 869, 911, 877, 1826, 869, 861, 920, 1826, 921, 870,
+ 877, 919, 1826, 1826, 879, 1826, 870, 870, 873, 887,
+ 892, 875, 886, 933, 892, 893, 894, 932, 890, 939,
+ 940, 1826, 889, 942, 943, 885, 945, 906, 890, 902,
+ 892, 922, 951, 911, 1826, 953, 902, 917, 904, 900,
+ 916, 921, 909, 909, 962, 921, 1826, 923, 922, 924,
+ 917, 926, 927, 924, 914, 917, 917, 974, 923, 976,
+ 977, 923, 980, 1826, 918, 933, 926, 984, 939, 1826,
+
+ 1826, 935, 945, 931, 948, 934, 993, 994, 941, 951,
+ 998, 957, 1826, 949, 949, 951, 953, 1004, 949, 1826,
+ 1826, 951, 1826, 1826, 965, 1826, 959, 1009, 960, 1011,
+ 993, 1826, 971, 1826, 958, 966, 960, 959, 962, 962,
+ 963, 1021, 971, 1826, 967, 1024, 979, 970, 985, 985,
+ 988, 988, 985, 1027, 991, 1826, 983, 1826, 1826, 994,
+ 1826, 995, 996, 993, 1035, 1826, 986, 986, 992, 991,
+ 1003, 1003, 1826, 1826, 1042, 991, 1826, 1008, 993, 993,
+ 995, 1001, 1826, 1054, 1007, 1056, 1019, 1826, 1016, 1826,
+ 1035, 1055, 1061, 1062, 1021, 1007, 1065, 1066, 1021, 1826,
+
+ 1011, 1069, 1826, 1009, 1066, 1031, 1027, 1069, 1019, 1024,
+ 1022, 1079, 1037, 1081, 1082, 1045, 1034, 1028, 1045, 1088,
+ 1032, 1049, 1034, 1049, 1033, 1089, 1090, 1091, 1040, 1093,
+ 1058, 1826, 1044, 1826, 1055, 1102, 1074, 1061, 1826, 1826,
+ 1049, 1106, 1826, 1826, 1055, 1053, 1826, 1109, 1057, 1106,
+ 1051, 1056, 1115, 1065, 1075, 1076, 1826, 1119, 1074, 1826,
+ 1826, 1065, 1080, 1068, 1083, 1826, 1120, 1088, 1081, 1082,
+ 1091, 1073, 1080, 1082, 1134, 1096, 1095, 1138, 1089, 1826,
+ 1140, 1087, 1142, 1826, 1092, 1092, 1826, 1096, 1091, 1090,
+ 1148, 1103, 1826, 1145, 1098, 1095, 1826, 1109, 1112, 1155,
+
+ 1110, 1157, 1100, 1102, 1110, 1100, 1116, 1117, 1111, 1127,
+ 1826, 1117, 1167, 1826, 1163, 1826, 1128, 1826, 1165, 1122,
+ 1130, 1121, 1128, 1826, 1125, 1130, 1128, 1178, 1179, 1124,
+ 1826, 1139, 1826, 1129, 1141, 1142, 1185, 1129, 1137, 1131,
+ 1139, 1152, 1826, 1151, 1141, 1140, 1194, 1144, 1156, 1147,
+ 1156, 1158, 1162, 1826, 1826, 1201, 1146, 1162, 1204, 1205,
+ 1826, 1201, 1165, 1162, 1167, 1154, 1149, 1212, 1171, 1826,
+ 1214, 1173, 1174, 1217, 1176, 1179, 1826, 1220, 1183, 1826,
+ 1826, 1165, 1223, 1172, 1225, 1170, 1187, 1826, 1173, 1826,
+ 1173, 1175, 1826, 1180, 1190, 1826, 1176, 1188, 1826, 1184,
+
+ 1826, 1194, 1188, 1192, 1183, 1235, 1184, 1192, 1201, 1194,
+ 1189, 1190, 1205, 1196, 1203, 1190, 1205, 1210, 1253, 1212,
+ 1255, 1256, 1201, 1217, 1208, 1222, 1218, 1211, 1826, 1263,
+ 1826, 1826, 1264, 1265, 1222, 1221, 1222, 1212, 1826, 1826,
+ 1826, 1270, 1214, 1230, 1273, 1826, 1269, 1220, 1826, 1219,
+ 1221, 1232, 1279, 1230, 1826, 1239, 1282, 1826, 1826, 1288,
+ 1293, 1298, 1303, 1308, 1313, 1318, 1321, 1295, 1300, 1302,
+ 1315
} ;
-static const flex_int16_t yy_def[1470] =
+static const flex_int16_t yy_def[1472] =
{ 0,
- 1458, 1458, 1459, 1459, 1458, 1458, 1458, 1458, 1458, 1458,
- 1457, 1457, 1457, 1457, 1457, 1460, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1461,
- 1457, 1457, 1457, 1462, 15, 1457, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1463, 45, 45,
+ 1460, 1460, 1461, 1461, 1460, 1460, 1460, 1460, 1460, 1460,
+ 1459, 1459, 1459, 1459, 1459, 1462, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1463,
+ 1459, 1459, 1459, 1464, 15, 1459, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1460, 1457,
- 1457, 1457, 1457, 1457, 1457, 1464, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1461, 1457, 1462,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1462, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1466, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1463, 1459, 1464,
- 1457, 1457, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1465, 45, 1463, 45, 45,
+ 1459, 1459, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1467, 45, 1465, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1464, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1466, 45, 45, 45, 1457,
- 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1466, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1468, 45, 45, 45, 1459,
+ 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45,
- 1465, 1457, 1463, 45, 45, 45, 45, 45, 45, 45,
+ 1467, 1459, 1465, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1467, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1469, 45, 45, 45, 45, 45,
- 45, 1457, 45, 45, 1457, 45, 1457, 45, 1463, 1457,
- 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45,
+ 1459, 45, 45, 1459, 45, 1459, 45, 1465, 1459, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1459, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1457, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1457,
+ 45, 45, 45, 45, 45, 45, 45, 1459, 1459, 1459,
- 1457, 1457, 1468, 45, 45, 45, 45, 45, 45, 1457,
- 45, 45, 1457, 45, 1463, 45, 45, 45, 1457, 45,
- 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45,
- 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45,
+ 1470, 45, 45, 45, 45, 45, 45, 1459, 45, 45,
+ 1459, 45, 1465, 45, 45, 45, 1459, 45, 45, 45,
+ 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45,
+ 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1457, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1457, 45, 1457,
+ 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1459, 45, 1459, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1457, 1457,
- 1457, 45, 1457, 45, 45, 1457, 1469, 45, 45, 1457,
- 1457, 45, 1457, 45, 1457, 45, 45, 45, 1457, 45,
+ 45, 45, 45, 45, 45, 1459, 1459, 1459, 45, 1459,
+ 45, 45, 1459, 1471, 45, 45, 1459, 1459, 45, 1459,
+ 45, 1459, 45, 45, 45, 1459, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45,
- 45, 45, 45, 45, 45, 45, 1457, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45,
+ 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1457, 45, 45, 1457, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45,
+ 1459, 45, 45, 1459, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1457, 45, 45, 45, 45, 45, 45, 1457, 1457,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1459, 45,
+ 45, 45, 45, 45, 45, 1459, 1459, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1457, 45, 45, 45,
- 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45,
- 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45,
+ 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1457, 45, 45, 45,
- 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45,
- 45, 1457, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1457,
+ 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1459, 45, 45, 45, 45, 45, 1459, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1457, 1457, 45, 45, 45,
- 45, 1457, 1457, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1459, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1459, 1459, 45, 45, 45, 45, 1459,
+ 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
-
- 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45,
- 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1457, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45,
- 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1457, 1457, 45, 45, 45, 1457, 45, 45,
- 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1459, 45, 45, 45, 45, 45, 45, 1459, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1457, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45,
+ 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1459, 1459, 45, 45, 45, 1459, 45, 45, 45, 1459,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1457, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1457,
- 45, 1457, 1457, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1459, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1457, 1457, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1457, 1457, 45, 1457, 45, 1457, 45, 45, 45,
- 45, 45, 45, 45, 45, 1457, 45, 45, 45, 1457,
- 45, 45, 45, 45, 1457, 1457, 45, 1457, 45, 45,
+ 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1459, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1457, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1457, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45,
-
- 45, 1457, 1457, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45,
- 45, 45, 1457, 1457, 45, 1457, 1457, 45, 1457, 45,
- 45, 45, 45, 45, 1457, 45, 1457, 45, 45, 45,
- 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1457, 45, 1457,
- 1457, 45, 1457, 45, 45, 45, 45, 1457, 45, 45,
- 45, 45, 45, 45, 45, 1457, 1457, 45, 45, 1457,
- 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45,
- 1457, 45, 1457, 45, 45, 45, 45, 45, 45, 45,
-
- 45, 45, 1457, 45, 1457, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1459, 45, 1459, 1459,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1457, 45, 45, 45,
- 45, 45, 45, 45, 1457, 45, 1457, 45, 45, 45,
- 45, 1457, 1457, 45, 45, 1457, 1457, 45, 1457, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45,
- 45, 1457, 1457, 45, 45, 45, 45, 1457, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1457, 45, 45, 45, 1457, 45, 1457, 45, 45,
- 45, 45, 45, 1457, 45, 45, 45, 1457, 45, 45,
+ 45, 1459, 1459, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1459,
+ 1459, 45, 1459, 45, 1459, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1459, 45, 45, 45, 1459, 45, 45,
+ 45, 45, 1459, 1459, 45, 1459, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1459, 45, 45, 45, 45, 45, 1459,
+
+ 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1459, 45, 45, 45, 45, 45, 45, 1459,
+ 1459, 45, 1459, 1459, 45, 1459, 45, 45, 45, 45,
+ 45, 1459, 45, 1459, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1459, 45, 1459, 1459, 45,
+ 1459, 45, 45, 45, 45, 1459, 45, 45, 45, 45,
+ 45, 45, 1459, 1459, 45, 45, 1459, 45, 45, 45,
+ 45, 45, 1459, 45, 45, 45, 45, 1459, 45, 1459,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1459,
+
+ 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1457, 45, 45, 1457, 45, 1457, 45, 1457, 45,
- 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45,
- 1457, 45, 1457, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1457, 1457, 45, 45, 45, 45, 45, 1457,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1457, 45, 45, 1457, 1457, 45,
- 45, 45, 45, 45, 45, 1457, 45, 1457, 45, 45,
- 1457, 45, 45, 1457, 45, 45, 1457, 45, 1457, 45,
+ 45, 1459, 45, 1459, 45, 45, 45, 45, 1459, 1459,
+ 45, 45, 1459, 1459, 45, 45, 1459, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1459, 45, 45, 1459,
+ 1459, 45, 45, 45, 45, 1459, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1459,
+ 45, 45, 45, 1459, 45, 45, 1459, 45, 45, 45,
+ 45, 45, 1459, 45, 45, 45, 1459, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1459, 45, 45, 1459, 45, 1459, 45, 1459, 45, 45,
+ 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45,
+ 1459, 45, 1459, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1459, 1459, 45, 45, 45, 45, 45,
+ 1459, 45, 45, 45, 45, 45, 45, 45, 45, 1459,
+ 45, 45, 45, 45, 45, 45, 1459, 45, 45, 1459,
+ 1459, 45, 45, 45, 45, 45, 45, 1459, 45, 1459,
+ 45, 45, 1459, 45, 45, 1459, 45, 45, 1459, 45,
+
+ 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1457, 45, 1457, 1457,
- 45, 45, 45, 45, 45, 45, 1457, 1457, 1457, 45,
- 45, 45, 45, 1457, 45, 45, 1457, 45, 45, 45,
- 45, 45, 1457, 45, 45, 1457, 0, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457
+ 45, 45, 45, 45, 45, 45, 45, 45, 1459, 45,
+ 1459, 1459, 45, 45, 45, 45, 45, 45, 1459, 1459,
+ 1459, 45, 45, 45, 45, 1459, 45, 45, 1459, 45,
+ 45, 45, 45, 45, 1459, 45, 45, 1459, 0, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459
} ;
-static const flex_int16_t yy_nxt[1895] =
+static const flex_int16_t yy_nxt[1898] =
{ 0,
- 1457, 13, 14, 13, 1457, 15, 16, 1457, 17, 18,
- 19, 20, 21, 22, 22, 22, 23, 24, 85, 361,
- 37, 14, 37, 86, 25, 26, 38, 1457, 1457, 27,
+ 1459, 13, 14, 13, 1459, 15, 16, 1459, 17, 18,
+ 19, 20, 21, 22, 22, 22, 23, 24, 85, 360,
+ 37, 14, 37, 86, 25, 26, 38, 1459, 1459, 27,
37, 14, 37, 42, 28, 42, 38, 91, 92, 29,
115, 30, 13, 14, 13, 90, 91, 25, 31, 92,
- 13, 14, 13, 13, 14, 13, 32, 40, 824, 13,
- 14, 13, 33, 40, 115, 91, 92, 362, 90, 34,
+ 13, 14, 13, 13, 14, 13, 32, 40, 1459, 13,
+ 14, 13, 33, 40, 115, 91, 92, 361, 90, 34,
35, 13, 14, 13, 94, 15, 16, 95, 17, 18,
19, 20, 21, 22, 22, 22, 23, 24, 13, 14,
13, 108, 39, 90, 25, 26, 13, 14, 13, 27,
39, 84, 84, 84, 28, 42, 41, 42, 42, 29,
42, 30, 82, 107, 41, 111, 93, 25, 31, 108,
- 130, 137, 88, 825, 88, 826, 32, 89, 89, 89,
- 131, 138, 33, 139, 378, 82, 107, 379, 111, 34,
+ 130, 137, 88, 824, 88, 825, 32, 89, 89, 89,
+ 131, 138, 33, 139, 376, 82, 107, 377, 111, 34,
35, 44, 44, 44, 45, 45, 46, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 47, 45, 48, 49, 50, 51, 45, 52, 53,
@@ -1266,199 +1268,199 @@ static const flex_int16_t yy_nxt[1895] =
45, 45, 80, 103, 81, 81, 81, 80, 109, 83,
83, 83, 101, 114, 80, 82, 83, 83, 83, 121,
82, 145, 122, 112, 123, 146, 124, 82, 162, 103,
- 827, 103, 163, 113, 134, 223, 114, 110, 82, 135,
- 192, 107, 136, 82, 193, 147, 112, 102, 224, 507,
- 82, 45, 508, 45, 45, 45, 45, 119, 45, 45,
+ 826, 103, 163, 113, 134, 223, 114, 110, 82, 135,
+ 192, 107, 136, 82, 193, 147, 112, 102, 224, 504,
+ 82, 45, 505, 45, 45, 45, 45, 119, 45, 45,
45, 113, 117, 120, 107, 45, 45, 192, 45, 45,
89, 89, 89, 194, 45, 132, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 89, 89,
- 89, 45, 125, 262, 111, 45, 126, 263, 180, 127,
+ 89, 45, 125, 428, 111, 45, 126, 429, 180, 127,
128, 141, 142, 45, 178, 143, 151, 45, 180, 45,
118, 144, 129, 148, 152, 149, 153, 150, 112, 114,
- 156, 154, 155, 157, 158, 164, 180, 430, 113, 165,
- 178, 431, 166, 305, 159, 179, 183, 160, 393, 167,
- 168, 170, 114, 171, 101, 169, 828, 172, 84, 84,
+ 156, 154, 155, 157, 158, 164, 180, 480, 113, 165,
+ 178, 481, 166, 304, 159, 179, 183, 160, 391, 167,
+ 168, 170, 114, 171, 101, 169, 827, 172, 84, 84,
84, 80, 174, 81, 81, 81, 113, 175, 187, 82,
88, 179, 88, 173, 82, 89, 89, 89, 80, 178,
83, 83, 83, 84, 84, 84, 179, 191, 100, 102,
196, 82, 82, 197, 82, 100, 187, 82, 198, 200,
- 208, 199, 187, 290, 242, 181, 214, 215, 225, 209,
+ 208, 199, 187, 289, 242, 181, 214, 215, 225, 209,
210, 233, 182, 191, 82, 197, 216, 82, 196, 204,
- 197, 829, 200, 100, 226, 243, 198, 100, 199, 290,
+ 197, 828, 200, 100, 226, 243, 198, 100, 199, 289,
205, 100, 220, 228, 221, 196, 229, 254, 255, 100,
- 230, 265, 282, 100, 289, 100, 186, 203, 203, 203,
- 291, 222, 830, 234, 203, 203, 203, 203, 203, 203,
- 289, 258, 275, 248, 259, 260, 276, 290, 291, 300,
- 277, 297, 289, 291, 266, 267, 268, 203, 203, 203,
- 203, 203, 203, 301, 304, 269, 306, 270, 292, 271,
-
- 272, 294, 273, 293, 297, 308, 297, 300, 316, 423,
- 404, 459, 460, 304, 400, 400, 317, 304, 350, 306,
- 301, 412, 318, 404, 831, 409, 424, 482, 412, 311,
- 478, 483, 308, 309, 309, 309, 357, 400, 401, 404,
- 309, 309, 309, 309, 309, 309, 406, 407, 409, 412,
- 466, 518, 416, 491, 496, 408, 468, 492, 497, 760,
- 467, 518, 761, 309, 309, 309, 309, 309, 309, 351,
- 624, 444, 352, 415, 415, 415, 445, 658, 659, 518,
- 415, 415, 415, 415, 415, 415, 479, 513, 526, 528,
- 527, 549, 514, 599, 620, 625, 550, 624, 600, 626,
-
- 707, 718, 719, 415, 415, 415, 415, 415, 415, 674,
- 708, 683, 720, 717, 795, 526, 684, 527, 723, 724,
- 802, 796, 446, 625, 718, 832, 803, 447, 45, 45,
- 45, 833, 834, 835, 836, 45, 45, 45, 45, 45,
- 45, 717, 813, 797, 837, 838, 675, 839, 841, 842,
- 798, 843, 840, 685, 799, 844, 845, 846, 45, 45,
- 45, 45, 45, 45, 847, 848, 849, 850, 851, 852,
- 813, 853, 854, 855, 856, 857, 859, 860, 861, 858,
- 862, 863, 864, 865, 866, 867, 868, 869, 870, 871,
- 872, 873, 874, 875, 876, 877, 878, 879, 880, 881,
-
- 882, 883, 884, 885, 886, 887, 889, 890, 891, 892,
- 893, 894, 895, 896, 897, 898, 899, 888, 900, 901,
- 902, 903, 904, 905, 906, 907, 908, 909, 910, 911,
- 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,
- 922, 923, 924, 902, 925, 926, 901, 927, 928, 929,
- 930, 931, 934, 935, 936, 937, 932, 938, 939, 940,
- 941, 942, 943, 944, 945, 946, 947, 948, 949, 951,
- 952, 953, 954, 955, 956, 957, 958, 959, 960, 950,
- 961, 962, 963, 964, 965, 966, 967, 968, 969, 970,
- 971, 972, 973, 974, 975, 976, 977, 978, 979, 980,
-
- 981, 982, 983, 984, 985, 987, 986, 933, 988, 989,
- 990, 991, 992, 993, 994, 995, 996, 997, 998, 999,
- 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
- 1010, 1011, 985, 986, 1012, 1013, 1014, 1015, 1017, 1019,
- 1020, 1021, 1016, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
- 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
- 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
- 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
- 1018, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
- 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077,
-
- 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
- 1065, 1088, 1089, 1090, 1091, 1092, 1066, 1093, 1094, 1095,
- 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105,
- 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115,
- 1116, 1117, 1118, 1119, 1120, 1122, 1123, 1124, 1125, 1126,
- 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136,
- 1137, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147,
- 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
- 1158, 1159, 1160, 1161, 1162, 1134, 1163, 1164, 1165, 1167,
- 1168, 1169, 1170, 1171, 1172, 1121, 1166, 1173, 1174, 1175,
-
- 1176, 1177, 1138, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
- 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194,
- 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204,
- 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
- 1215, 1216, 1194, 1217, 1218, 1219, 1220, 1221, 1222, 1223,
- 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233,
- 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243,
- 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
- 1254, 1255, 1256, 1257, 1258, 1259, 1261, 1262, 1263, 1264,
- 1265, 1266, 1267, 1240, 1268, 1269, 1270, 1271, 1272, 1273,
-
- 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283,
- 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1289,
- 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303,
- 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1283, 1311, 1312,
- 1313, 1260, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321,
- 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331,
- 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341,
- 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351,
- 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361,
- 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371,
-
- 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381,
- 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391,
- 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401,
- 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411,
- 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421,
- 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431,
- 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441,
- 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451,
- 1452, 1453, 1454, 1455, 1456, 12, 12, 12, 12, 12,
- 36, 36, 36, 36, 36, 79, 296, 79, 79, 79,
-
- 98, 403, 98, 517, 98, 100, 100, 100, 100, 100,
- 116, 116, 116, 116, 116, 177, 100, 177, 177, 177,
- 201, 201, 201, 823, 822, 821, 820, 819, 818, 817,
- 816, 815, 814, 812, 811, 810, 809, 808, 807, 806,
- 805, 804, 801, 800, 794, 793, 792, 791, 790, 789,
- 788, 787, 786, 785, 784, 783, 782, 781, 780, 779,
- 778, 777, 776, 775, 774, 773, 772, 771, 770, 769,
- 768, 767, 766, 765, 764, 763, 762, 759, 758, 757,
- 756, 755, 754, 753, 752, 751, 750, 749, 748, 747,
- 746, 745, 744, 743, 742, 741, 740, 739, 738, 737,
-
- 736, 735, 734, 733, 732, 731, 730, 729, 728, 727,
- 726, 725, 722, 721, 716, 715, 714, 713, 712, 711,
- 710, 709, 706, 705, 704, 703, 702, 701, 700, 699,
- 698, 697, 696, 695, 694, 693, 692, 691, 690, 689,
- 688, 687, 686, 682, 681, 680, 679, 678, 677, 676,
- 673, 672, 671, 670, 669, 668, 667, 666, 665, 664,
- 663, 662, 661, 660, 657, 656, 655, 654, 653, 652,
- 651, 650, 649, 648, 647, 646, 645, 644, 643, 642,
- 641, 640, 639, 638, 637, 636, 635, 634, 633, 632,
- 631, 630, 629, 628, 627, 623, 622, 621, 620, 619,
-
- 618, 617, 616, 615, 614, 613, 612, 611, 610, 609,
- 608, 607, 606, 605, 604, 603, 602, 601, 598, 597,
- 596, 595, 594, 593, 592, 591, 590, 589, 588, 587,
- 586, 585, 584, 583, 582, 581, 580, 579, 578, 577,
- 576, 575, 574, 573, 572, 571, 570, 569, 568, 567,
- 566, 565, 564, 563, 562, 561, 560, 559, 558, 557,
- 556, 555, 554, 553, 552, 551, 548, 547, 546, 545,
- 544, 543, 542, 541, 540, 539, 538, 537, 536, 535,
- 534, 533, 532, 531, 530, 529, 525, 524, 523, 522,
- 521, 520, 519, 516, 515, 512, 511, 510, 509, 506,
-
- 505, 504, 503, 502, 501, 500, 499, 498, 495, 494,
- 493, 490, 489, 488, 487, 486, 485, 484, 481, 480,
- 477, 476, 475, 474, 473, 472, 471, 470, 469, 465,
- 464, 463, 462, 461, 458, 457, 456, 455, 454, 453,
- 452, 451, 450, 449, 448, 443, 442, 441, 440, 439,
- 438, 437, 436, 435, 434, 433, 432, 429, 428, 427,
- 426, 425, 422, 421, 420, 419, 418, 417, 414, 413,
- 411, 410, 405, 402, 399, 398, 397, 396, 395, 394,
- 392, 391, 390, 389, 388, 387, 386, 385, 384, 383,
- 382, 381, 380, 377, 376, 375, 374, 373, 372, 371,
-
- 370, 369, 368, 367, 366, 365, 364, 363, 360, 359,
- 358, 356, 355, 354, 353, 349, 348, 347, 346, 345,
- 344, 343, 342, 341, 340, 339, 338, 337, 336, 335,
- 334, 333, 332, 331, 330, 329, 328, 327, 326, 325,
- 324, 323, 322, 321, 320, 319, 315, 314, 313, 312,
- 310, 202, 307, 305, 303, 302, 299, 298, 295, 288,
- 287, 286, 285, 284, 283, 281, 280, 279, 278, 274,
- 264, 261, 257, 256, 253, 252, 251, 250, 249, 247,
- 246, 245, 244, 241, 240, 239, 238, 237, 236, 235,
- 232, 231, 227, 219, 218, 217, 213, 212, 211, 207,
-
- 206, 202, 195, 190, 189, 188, 185, 184, 176, 161,
- 140, 133, 106, 105, 104, 43, 99, 97, 96, 87,
- 43, 1457, 11, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457
+ 230, 264, 281, 100, 288, 100, 186, 203, 203, 203,
+ 290, 222, 829, 234, 203, 203, 203, 203, 203, 203,
+ 288, 258, 274, 248, 259, 260, 275, 289, 290, 299,
+ 276, 296, 288, 290, 265, 266, 267, 203, 203, 203,
+ 203, 203, 203, 300, 303, 268, 305, 269, 291, 270,
+
+ 271, 293, 272, 292, 296, 307, 296, 299, 315, 421,
+ 402, 457, 458, 303, 398, 398, 316, 303, 349, 305,
+ 300, 410, 317, 402, 672, 407, 422, 488, 410, 310,
+ 476, 489, 307, 308, 308, 308, 356, 398, 399, 402,
+ 308, 308, 308, 308, 308, 308, 404, 405, 407, 410,
+ 464, 515, 414, 493, 510, 406, 466, 494, 830, 511,
+ 465, 673, 515, 308, 308, 308, 308, 308, 308, 350,
+ 622, 442, 351, 413, 413, 413, 443, 831, 537, 515,
+ 413, 413, 413, 413, 413, 413, 477, 523, 547, 524,
+ 525, 538, 596, 548, 621, 617, 714, 597, 622, 704,
+
+ 623, 656, 657, 413, 413, 413, 413, 413, 413, 705,
+ 681, 715, 792, 716, 523, 682, 524, 720, 721, 793,
+ 799, 621, 444, 717, 714, 832, 800, 445, 45, 45,
+ 45, 833, 834, 835, 715, 45, 45, 45, 45, 45,
+ 45, 758, 794, 810, 759, 836, 837, 839, 840, 795,
+ 841, 838, 683, 796, 842, 843, 844, 845, 45, 45,
+ 45, 45, 45, 45, 846, 847, 848, 849, 850, 851,
+ 852, 810, 853, 854, 855, 857, 858, 859, 856, 860,
+ 861, 862, 863, 864, 865, 866, 867, 868, 869, 870,
+ 871, 872, 873, 874, 875, 876, 877, 878, 879, 880,
+
+ 881, 882, 883, 884, 886, 887, 888, 889, 890, 891,
+ 892, 893, 894, 895, 896, 885, 897, 898, 899, 900,
+ 901, 902, 903, 904, 905, 906, 907, 908, 909, 910,
+ 911, 912, 913, 914, 915, 916, 917, 918, 919, 920,
+ 921, 899, 922, 923, 898, 924, 925, 926, 927, 928,
+ 929, 932, 933, 934, 935, 930, 936, 937, 938, 939,
+ 940, 941, 942, 943, 944, 945, 946, 947, 949, 950,
+ 951, 952, 953, 954, 955, 956, 957, 958, 948, 959,
+ 960, 961, 962, 963, 964, 965, 966, 967, 968, 969,
+ 970, 971, 972, 973, 974, 975, 976, 977, 978, 979,
+
+ 980, 981, 982, 984, 983, 985, 931, 986, 987, 988,
+ 989, 990, 991, 992, 993, 994, 995, 996, 997, 998,
+ 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
+ 982, 983, 1009, 1010, 1011, 1012, 1013, 1015, 1017, 1018,
+ 1019, 1014, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027,
+ 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
+ 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047,
+ 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1016,
+ 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066,
+ 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
+
+ 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1062, 1085,
+ 1086, 1087, 1088, 1089, 1063, 1090, 1091, 1092, 1093, 1094,
+ 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
+ 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
+ 1115, 1116, 1117, 1119, 1120, 1121, 1122, 1123, 1124, 1125,
+ 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1136,
+ 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
+ 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156,
+ 1157, 1158, 1159, 1131, 1160, 1161, 1162, 1163, 1165, 1166,
+ 1167, 1168, 1169, 1118, 1170, 1164, 1171, 1172, 1173, 1174,
+
+ 1135, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
+ 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
+ 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
+ 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
+ 1191, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222,
+ 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232,
+ 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
+ 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252,
+ 1253, 1254, 1255, 1256, 1257, 1259, 1260, 1261, 1262, 1263,
+ 1264, 1237, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272,
+
+ 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282,
+ 1283, 1284, 1285, 1286, 1287, 1289, 1290, 1291, 1292, 1288,
+ 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302,
+ 1303, 1304, 1305, 1306, 1307, 1308, 1281, 1309, 1310, 1311,
+ 1258, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320,
+ 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330,
+ 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340,
+ 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350,
+ 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360,
+ 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370,
+
+ 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380,
+ 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390,
+ 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400,
+ 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410,
+ 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420,
+ 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430,
+ 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440,
+ 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450,
+ 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 12, 12,
+ 12, 12, 12, 36, 36, 36, 36, 36, 79, 295,
+
+ 79, 79, 79, 98, 401, 98, 514, 98, 100, 100,
+ 100, 100, 100, 116, 116, 116, 116, 116, 177, 100,
+ 177, 177, 177, 201, 201, 201, 823, 822, 821, 820,
+ 819, 818, 817, 816, 815, 814, 813, 812, 811, 809,
+ 808, 807, 806, 805, 804, 803, 802, 801, 798, 797,
+ 791, 790, 789, 788, 787, 786, 785, 784, 783, 782,
+ 781, 780, 779, 778, 777, 776, 775, 774, 773, 772,
+ 771, 770, 769, 768, 767, 766, 765, 764, 763, 762,
+ 761, 760, 757, 756, 755, 754, 753, 752, 751, 750,
+ 749, 748, 747, 746, 745, 744, 743, 742, 741, 740,
+
+ 739, 738, 737, 736, 735, 734, 733, 732, 731, 730,
+ 729, 728, 727, 726, 725, 724, 723, 722, 719, 718,
+ 713, 712, 711, 710, 709, 708, 707, 706, 703, 702,
+ 701, 700, 699, 698, 697, 696, 695, 694, 693, 692,
+ 691, 690, 689, 688, 687, 686, 685, 684, 680, 679,
+ 678, 677, 676, 675, 674, 671, 670, 669, 668, 667,
+ 666, 665, 664, 663, 662, 661, 660, 659, 658, 655,
+ 654, 653, 652, 651, 650, 649, 648, 647, 646, 645,
+ 644, 643, 642, 641, 640, 639, 638, 637, 636, 635,
+ 634, 633, 632, 631, 630, 629, 628, 627, 626, 625,
+
+ 624, 620, 619, 618, 617, 616, 615, 614, 613, 612,
+ 611, 610, 609, 608, 607, 606, 605, 604, 603, 602,
+ 601, 600, 599, 598, 595, 594, 593, 592, 591, 590,
+ 589, 588, 587, 586, 585, 584, 583, 582, 581, 580,
+ 579, 578, 577, 576, 575, 574, 573, 572, 571, 570,
+ 569, 568, 567, 566, 565, 564, 563, 562, 561, 560,
+ 559, 558, 557, 556, 555, 554, 553, 552, 551, 550,
+ 549, 546, 545, 544, 543, 542, 541, 540, 539, 536,
+ 535, 534, 533, 532, 531, 530, 529, 528, 527, 526,
+ 522, 521, 520, 519, 518, 517, 516, 513, 512, 509,
+
+ 508, 507, 506, 503, 502, 501, 500, 499, 498, 497,
+ 496, 495, 492, 491, 490, 487, 486, 485, 484, 483,
+ 482, 479, 478, 475, 474, 473, 472, 471, 470, 469,
+ 468, 467, 463, 462, 461, 460, 459, 456, 455, 454,
+ 453, 452, 451, 450, 449, 448, 447, 446, 441, 440,
+ 439, 438, 437, 436, 435, 434, 433, 432, 431, 430,
+ 427, 426, 425, 424, 423, 420, 419, 418, 417, 416,
+ 415, 412, 411, 409, 408, 403, 400, 397, 396, 395,
+ 394, 393, 392, 390, 389, 388, 387, 386, 385, 384,
+ 383, 382, 381, 380, 379, 378, 375, 374, 373, 372,
+
+ 371, 370, 369, 368, 367, 366, 365, 364, 363, 362,
+ 359, 358, 357, 355, 354, 353, 352, 348, 347, 346,
+ 345, 344, 343, 342, 341, 340, 339, 338, 337, 336,
+ 335, 334, 333, 332, 331, 330, 329, 328, 327, 326,
+ 325, 324, 323, 322, 321, 320, 319, 318, 314, 313,
+ 312, 311, 309, 202, 306, 304, 302, 301, 298, 297,
+ 294, 287, 286, 285, 284, 283, 282, 280, 279, 278,
+ 277, 273, 263, 262, 261, 257, 256, 253, 252, 251,
+ 250, 249, 247, 246, 245, 244, 241, 240, 239, 238,
+ 237, 236, 235, 232, 231, 227, 219, 218, 217, 213,
+
+ 212, 211, 207, 206, 202, 195, 190, 189, 188, 185,
+ 184, 176, 161, 140, 133, 106, 105, 104, 43, 99,
+ 97, 96, 87, 43, 1459, 11, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459
} ;
-static const flex_int16_t yy_chk[1895] =
+static const flex_int16_t yy_chk[1898] =
{ 0,
0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 21, 252,
3, 3, 3, 21, 1, 1, 3, 0, 0, 1,
4, 4, 4, 13, 1, 13, 4, 27, 28, 1,
57, 1, 5, 5, 5, 26, 32, 1, 1, 33,
- 6, 6, 6, 7, 7, 7, 1, 7, 730, 8,
+ 6, 6, 6, 7, 7, 7, 1, 7, 0, 8,
8, 8, 1, 8, 57, 27, 28, 252, 26, 1,
1, 2, 2, 2, 32, 2, 2, 33, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 9, 9,
@@ -1466,8 +1468,8 @@ static const flex_int16_t yy_chk[1895] =
6, 20, 20, 20, 2, 37, 9, 37, 42, 2,
42, 2, 20, 51, 10, 54, 31, 2, 2, 52,
- 62, 66, 25, 731, 25, 732, 2, 25, 25, 25,
- 62, 66, 2, 66, 268, 20, 51, 268, 54, 2,
+ 62, 66, 25, 730, 25, 731, 2, 25, 25, 25,
+ 62, 66, 2, 66, 267, 20, 51, 267, 54, 2,
2, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
@@ -1479,20 +1481,20 @@ static const flex_int16_t yy_chk[1895] =
15, 15, 17, 47, 17, 17, 17, 19, 53, 19,
19, 19, 44, 56, 22, 17, 22, 22, 22, 60,
19, 69, 60, 55, 60, 69, 60, 22, 74, 47,
- 733, 59, 74, 55, 65, 131, 56, 53, 17, 65,
- 108, 63, 65, 19, 109, 69, 55, 44, 131, 393,
- 22, 45, 393, 45, 45, 45, 45, 59, 45, 45,
+ 732, 59, 74, 55, 65, 131, 56, 53, 17, 65,
+ 108, 63, 65, 19, 109, 69, 55, 44, 131, 391,
+ 22, 45, 391, 45, 45, 45, 45, 59, 45, 45,
45, 55, 58, 59, 63, 45, 45, 108, 45, 58,
88, 88, 88, 109, 45, 63, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 58, 89, 89,
- 89, 58, 61, 161, 70, 58, 61, 161, 92, 61,
+ 89, 58, 61, 324, 70, 58, 61, 324, 92, 61,
61, 68, 68, 58, 90, 68, 71, 58, 95, 58,
58, 68, 61, 70, 71, 70, 71, 70, 76, 77,
- 72, 71, 71, 72, 72, 75, 92, 325, 76, 75,
- 90, 325, 75, 282, 72, 91, 95, 72, 282, 75,
- 75, 76, 77, 76, 100, 75, 734, 76, 80, 80,
+ 72, 71, 71, 72, 72, 75, 92, 370, 76, 75,
+ 90, 370, 75, 281, 72, 91, 95, 72, 281, 75,
+ 75, 76, 77, 76, 100, 75, 733, 76, 80, 80,
80, 81, 77, 81, 81, 81, 76, 77, 103, 80,
82, 91, 82, 76, 81, 82, 82, 82, 83, 93,
83, 83, 83, 84, 84, 84, 94, 107, 102, 100,
@@ -1500,167 +1502,167 @@ static const flex_int16_t yy_chk[1895] =
111, 83, 80, 112, 84, 102, 103, 81, 113, 115,
122, 114, 119, 179, 145, 93, 126, 126, 132, 122,
122, 137, 94, 107, 83, 170, 126, 84, 111, 119,
- 112, 735, 115, 102, 132, 145, 113, 102, 114, 179,
+ 112, 734, 115, 102, 132, 145, 113, 102, 114, 179,
119, 102, 130, 134, 130, 150, 134, 156, 156, 102,
134, 163, 170, 102, 178, 102, 102, 118, 118, 118,
- 180, 130, 736, 137, 118, 118, 118, 118, 118, 118,
+ 180, 130, 735, 137, 118, 118, 118, 118, 118, 118,
181, 159, 165, 150, 159, 159, 165, 182, 183, 191,
165, 187, 178, 180, 163, 163, 163, 118, 118, 118,
118, 118, 118, 192, 196, 163, 198, 163, 181, 163,
- 163, 183, 163, 182, 187, 200, 205, 191, 210, 318,
- 297, 350, 350, 248, 289, 292, 210, 196, 243, 198,
- 192, 304, 210, 311, 737, 300, 318, 371, 357, 205,
- 368, 371, 200, 203, 203, 203, 248, 289, 292, 297,
- 203, 203, 203, 203, 203, 203, 299, 299, 300, 304,
- 356, 404, 311, 379, 383, 299, 357, 379, 383, 665,
- 356, 416, 665, 203, 203, 203, 203, 203, 203, 243,
- 526, 338, 243, 309, 309, 309, 338, 563, 563, 404,
- 309, 309, 309, 309, 309, 309, 368, 398, 414, 416,
- 414, 440, 398, 493, 528, 527, 440, 526, 493, 528,
-
- 613, 625, 626, 309, 309, 309, 309, 309, 309, 580,
- 613, 589, 626, 624, 702, 414, 589, 414, 629, 629,
- 706, 702, 338, 527, 625, 738, 706, 338, 415, 415,
- 415, 739, 741, 742, 743, 415, 415, 415, 415, 415,
- 415, 624, 718, 703, 744, 745, 580, 746, 747, 748,
- 703, 749, 746, 589, 703, 750, 751, 752, 415, 415,
- 415, 415, 415, 415, 753, 754, 755, 758, 759, 760,
- 718, 761, 764, 765, 766, 767, 768, 769, 770, 767,
- 771, 772, 773, 775, 776, 777, 778, 779, 780, 781,
- 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
-
- 792, 793, 794, 795, 796, 797, 798, 799, 800, 801,
- 802, 803, 805, 806, 807, 808, 809, 797, 810, 812,
- 813, 814, 815, 816, 817, 818, 819, 820, 821, 822,
- 823, 824, 825, 826, 827, 829, 830, 831, 832, 833,
- 834, 835, 836, 813, 837, 838, 812, 840, 841, 842,
- 843, 844, 845, 847, 848, 849, 844, 850, 851, 852,
- 853, 854, 855, 856, 857, 858, 859, 860, 861, 862,
- 865, 866, 867, 869, 870, 871, 872, 874, 875, 861,
- 876, 877, 878, 879, 880, 881, 882, 883, 884, 885,
- 886, 887, 888, 889, 890, 892, 893, 894, 895, 896,
-
- 897, 898, 899, 900, 901, 903, 902, 844, 904, 905,
- 906, 907, 908, 909, 910, 911, 912, 913, 914, 916,
- 917, 918, 919, 920, 921, 922, 923, 924, 925, 926,
- 927, 928, 901, 902, 929, 930, 932, 933, 934, 935,
- 936, 937, 933, 938, 939, 940, 941, 942, 943, 944,
- 945, 946, 947, 948, 949, 950, 951, 952, 953, 954,
- 955, 956, 957, 959, 960, 961, 962, 963, 964, 965,
- 966, 967, 968, 969, 971, 974, 975, 976, 977, 978,
- 934, 979, 980, 981, 982, 983, 984, 985, 986, 987,
- 988, 989, 990, 991, 992, 993, 994, 997, 998, 999,
-
- 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
- 985, 1010, 1011, 1014, 1016, 1018, 986, 1019, 1020, 1021,
- 1022, 1023, 1024, 1025, 1027, 1028, 1029, 1031, 1032, 1033,
- 1034, 1037, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046,
- 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1056, 1057,
- 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
- 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078,
- 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089,
- 1090, 1091, 1092, 1093, 1094, 1065, 1095, 1097, 1098, 1099,
- 1100, 1101, 1104, 1105, 1106, 1051, 1098, 1107, 1108, 1109,
-
- 1110, 1111, 1069, 1112, 1113, 1114, 1115, 1117, 1118, 1119,
- 1120, 1121, 1122, 1125, 1128, 1130, 1131, 1132, 1133, 1134,
- 1136, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1147,
- 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
- 1159, 1162, 1134, 1164, 1165, 1166, 1167, 1169, 1170, 1171,
- 1172, 1173, 1174, 1175, 1178, 1179, 1181, 1182, 1183, 1184,
- 1185, 1187, 1188, 1189, 1190, 1192, 1194, 1195, 1196, 1197,
- 1198, 1199, 1200, 1201, 1202, 1204, 1206, 1207, 1208, 1209,
- 1210, 1211, 1212, 1213, 1213, 1214, 1215, 1216, 1217, 1218,
- 1219, 1220, 1221, 1194, 1222, 1223, 1224, 1225, 1226, 1228,
-
- 1229, 1230, 1231, 1232, 1233, 1234, 1236, 1238, 1239, 1240,
- 1241, 1244, 1245, 1248, 1250, 1251, 1252, 1253, 1254, 1250,
- 1255, 1256, 1257, 1258, 1260, 1261, 1264, 1265, 1266, 1267,
- 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1240, 1276, 1277,
- 1278, 1214, 1279, 1280, 1281, 1283, 1284, 1285, 1287, 1289,
- 1290, 1291, 1292, 1293, 1295, 1296, 1297, 1299, 1300, 1301,
- 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311,
- 1313, 1314, 1316, 1318, 1320, 1321, 1322, 1323, 1325, 1326,
- 1327, 1328, 1329, 1330, 1332, 1334, 1335, 1336, 1337, 1338,
- 1339, 1340, 1341, 1342, 1344, 1345, 1346, 1347, 1348, 1349,
-
- 1350, 1351, 1352, 1355, 1356, 1357, 1358, 1359, 1361, 1362,
- 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372,
- 1373, 1374, 1376, 1377, 1380, 1381, 1382, 1383, 1384, 1385,
- 1387, 1389, 1390, 1392, 1393, 1395, 1396, 1398, 1400, 1401,
- 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411,
- 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421,
- 1422, 1423, 1424, 1425, 1426, 1428, 1431, 1432, 1433, 1434,
- 1435, 1436, 1440, 1441, 1442, 1443, 1445, 1446, 1448, 1449,
- 1450, 1451, 1452, 1454, 1455, 1458, 1458, 1458, 1458, 1458,
- 1459, 1459, 1459, 1459, 1459, 1460, 1466, 1460, 1460, 1460,
-
- 1461, 1467, 1461, 1468, 1461, 1462, 1462, 1462, 1462, 1462,
- 1463, 1463, 1463, 1463, 1463, 1464, 1469, 1464, 1464, 1464,
- 1465, 1465, 1465, 729, 728, 727, 726, 725, 724, 723,
- 721, 720, 719, 717, 715, 714, 713, 712, 711, 710,
- 709, 708, 705, 704, 701, 700, 699, 698, 697, 696,
- 695, 694, 693, 692, 691, 690, 689, 688, 687, 686,
- 685, 684, 682, 681, 680, 679, 678, 677, 676, 675,
- 673, 672, 671, 670, 669, 668, 666, 664, 663, 662,
- 661, 660, 659, 658, 657, 656, 655, 654, 653, 652,
- 651, 650, 649, 648, 647, 646, 645, 644, 643, 642,
-
- 641, 640, 639, 638, 637, 636, 635, 634, 633, 632,
- 631, 630, 628, 627, 623, 622, 621, 618, 617, 616,
- 615, 614, 611, 610, 609, 608, 607, 606, 605, 604,
- 603, 602, 601, 600, 598, 597, 596, 595, 594, 593,
- 592, 591, 590, 588, 587, 585, 584, 583, 582, 581,
- 579, 578, 577, 575, 574, 572, 571, 570, 569, 568,
- 567, 566, 565, 564, 562, 561, 560, 559, 558, 556,
- 555, 554, 553, 552, 551, 550, 548, 547, 546, 545,
- 544, 543, 542, 541, 540, 539, 538, 537, 536, 535,
- 534, 533, 532, 531, 530, 524, 522, 519, 518, 516,
-
- 515, 514, 512, 508, 507, 506, 505, 504, 503, 502,
- 501, 500, 499, 498, 497, 496, 495, 494, 492, 491,
- 490, 489, 488, 487, 486, 485, 484, 483, 482, 481,
- 479, 477, 476, 475, 474, 473, 472, 471, 470, 469,
- 468, 467, 466, 464, 463, 462, 461, 460, 459, 458,
- 457, 456, 455, 454, 453, 452, 451, 450, 449, 448,
- 447, 446, 445, 443, 442, 441, 439, 438, 437, 436,
- 435, 434, 432, 431, 430, 429, 428, 427, 425, 424,
- 423, 422, 421, 420, 418, 417, 412, 411, 409, 408,
- 407, 406, 405, 402, 399, 397, 396, 395, 394, 392,
-
- 391, 390, 389, 388, 387, 386, 385, 384, 382, 381,
- 380, 378, 377, 376, 375, 374, 373, 372, 370, 369,
- 367, 366, 365, 364, 363, 362, 361, 360, 359, 355,
- 354, 353, 352, 351, 349, 348, 347, 346, 345, 344,
- 343, 342, 341, 340, 339, 337, 336, 335, 334, 333,
- 332, 331, 330, 329, 328, 327, 326, 324, 323, 322,
- 321, 320, 317, 316, 315, 314, 313, 312, 308, 306,
- 303, 301, 298, 295, 288, 287, 286, 285, 284, 283,
- 281, 280, 279, 278, 277, 276, 275, 274, 273, 272,
- 271, 270, 269, 267, 266, 265, 264, 263, 262, 261,
-
- 260, 259, 258, 257, 256, 255, 254, 253, 251, 250,
- 249, 247, 246, 245, 244, 242, 241, 240, 239, 238,
- 237, 236, 235, 234, 232, 231, 230, 229, 228, 227,
- 226, 225, 224, 223, 222, 221, 220, 219, 218, 217,
- 216, 215, 214, 213, 212, 211, 209, 208, 207, 206,
- 204, 201, 199, 197, 195, 194, 189, 188, 184, 176,
- 175, 174, 173, 172, 171, 169, 168, 167, 166, 164,
- 162, 160, 158, 157, 155, 154, 153, 152, 151, 149,
- 148, 147, 146, 144, 143, 142, 141, 140, 139, 138,
- 136, 135, 133, 129, 128, 127, 125, 124, 123, 121,
-
- 120, 116, 110, 106, 105, 104, 98, 97, 78, 73,
- 67, 64, 50, 49, 48, 43, 41, 39, 38, 24,
- 14, 11, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
- 1457, 1457, 1457, 1457
+ 163, 183, 163, 182, 187, 200, 205, 191, 210, 317,
+ 296, 349, 349, 248, 288, 291, 210, 196, 243, 198,
+ 192, 303, 210, 310, 578, 299, 317, 377, 356, 205,
+ 367, 377, 200, 203, 203, 203, 248, 288, 291, 296,
+ 203, 203, 203, 203, 203, 203, 298, 298, 299, 303,
+ 355, 402, 310, 381, 396, 298, 356, 381, 736, 396,
+ 355, 578, 414, 203, 203, 203, 203, 203, 203, 243,
+ 524, 337, 243, 308, 308, 308, 337, 737, 428, 402,
+ 308, 308, 308, 308, 308, 308, 367, 412, 438, 412,
+ 414, 428, 490, 438, 523, 525, 621, 490, 524, 610,
+
+ 525, 561, 561, 308, 308, 308, 308, 308, 308, 610,
+ 587, 622, 699, 623, 412, 587, 412, 626, 626, 699,
+ 703, 523, 337, 623, 621, 739, 703, 337, 413, 413,
+ 413, 740, 741, 742, 622, 413, 413, 413, 413, 413,
+ 413, 663, 700, 715, 663, 743, 744, 745, 746, 700,
+ 747, 744, 587, 700, 748, 749, 750, 751, 413, 413,
+ 413, 413, 413, 413, 752, 753, 756, 757, 758, 759,
+ 762, 715, 763, 764, 765, 766, 767, 768, 765, 769,
+ 770, 771, 773, 774, 775, 776, 777, 778, 779, 780,
+ 781, 782, 783, 784, 785, 786, 787, 788, 789, 790,
+
+ 791, 792, 793, 794, 795, 796, 797, 798, 799, 800,
+ 802, 803, 804, 805, 806, 794, 807, 809, 810, 811,
+ 812, 813, 814, 815, 816, 817, 818, 819, 820, 821,
+ 822, 823, 824, 825, 827, 828, 829, 830, 831, 832,
+ 833, 810, 834, 835, 809, 836, 838, 839, 840, 841,
+ 842, 843, 845, 846, 847, 842, 848, 849, 850, 851,
+ 852, 853, 854, 855, 856, 857, 858, 859, 860, 863,
+ 864, 865, 867, 868, 869, 871, 872, 873, 859, 874,
+ 875, 876, 877, 878, 879, 880, 881, 882, 883, 884,
+ 885, 886, 887, 889, 890, 891, 892, 893, 894, 895,
+
+ 896, 897, 898, 900, 899, 901, 842, 902, 903, 904,
+ 905, 906, 907, 908, 909, 910, 911, 913, 914, 915,
+ 916, 917, 918, 919, 920, 921, 922, 923, 924, 925,
+ 898, 899, 926, 927, 928, 930, 931, 932, 933, 934,
+ 935, 931, 936, 937, 938, 939, 940, 941, 942, 943,
+ 944, 945, 946, 947, 948, 949, 950, 951, 952, 953,
+ 954, 956, 957, 958, 959, 960, 961, 962, 963, 964,
+ 965, 966, 968, 971, 972, 973, 974, 975, 976, 932,
+ 977, 978, 979, 980, 981, 982, 983, 984, 985, 986,
+ 987, 988, 989, 990, 991, 994, 995, 996, 997, 998,
+
+ 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 982, 1007,
+ 1008, 1009, 1012, 1014, 983, 1016, 1017, 1018, 1019, 1020,
+ 1021, 1022, 1023, 1025, 1026, 1027, 1029, 1030, 1031, 1032,
+ 1035, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
+ 1046, 1047, 1048, 1049, 1050, 1051, 1053, 1054, 1055, 1056,
+ 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1066, 1067,
+ 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1078,
+ 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088,
+ 1089, 1090, 1091, 1062, 1092, 1093, 1095, 1096, 1097, 1098,
+ 1099, 1102, 1103, 1048, 1104, 1096, 1105, 1106, 1107, 1108,
+
+ 1066, 1109, 1110, 1111, 1112, 1114, 1115, 1116, 1117, 1118,
+ 1119, 1122, 1125, 1127, 1128, 1129, 1130, 1131, 1133, 1135,
+ 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1145, 1146,
+ 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1157,
+ 1131, 1160, 1162, 1163, 1164, 1165, 1167, 1168, 1169, 1170,
+ 1171, 1172, 1175, 1176, 1178, 1179, 1180, 1181, 1182, 1184,
+ 1185, 1186, 1187, 1189, 1191, 1192, 1193, 1194, 1195, 1196,
+ 1197, 1198, 1199, 1201, 1202, 1204, 1205, 1206, 1207, 1208,
+ 1209, 1210, 1211, 1211, 1212, 1213, 1214, 1215, 1216, 1217,
+ 1218, 1191, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
+
+ 1227, 1228, 1229, 1230, 1231, 1233, 1235, 1236, 1237, 1238,
+ 1241, 1242, 1245, 1246, 1248, 1249, 1250, 1251, 1252, 1248,
+ 1253, 1254, 1255, 1256, 1258, 1259, 1262, 1263, 1264, 1265,
+ 1267, 1268, 1269, 1270, 1271, 1272, 1237, 1273, 1274, 1275,
+ 1212, 1276, 1277, 1278, 1279, 1281, 1282, 1283, 1285, 1286,
+ 1288, 1289, 1290, 1291, 1292, 1294, 1295, 1296, 1298, 1299,
+ 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309,
+ 1310, 1312, 1313, 1315, 1317, 1319, 1320, 1321, 1322, 1323,
+ 1325, 1326, 1327, 1328, 1329, 1330, 1332, 1334, 1335, 1336,
+ 1337, 1338, 1339, 1340, 1341, 1342, 1344, 1345, 1346, 1347,
+
+ 1348, 1349, 1350, 1351, 1352, 1353, 1356, 1357, 1358, 1359,
+ 1360, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1371,
+ 1372, 1373, 1374, 1375, 1376, 1378, 1379, 1382, 1383, 1384,
+ 1385, 1386, 1387, 1389, 1391, 1392, 1394, 1395, 1397, 1398,
+ 1400, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410,
+ 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420,
+ 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1430, 1433,
+ 1434, 1435, 1436, 1437, 1438, 1442, 1443, 1444, 1445, 1447,
+ 1448, 1450, 1451, 1452, 1453, 1454, 1456, 1457, 1460, 1460,
+ 1460, 1460, 1460, 1461, 1461, 1461, 1461, 1461, 1462, 1468,
+
+ 1462, 1462, 1462, 1463, 1469, 1463, 1470, 1463, 1464, 1464,
+ 1464, 1464, 1464, 1465, 1465, 1465, 1465, 1465, 1466, 1471,
+ 1466, 1466, 1466, 1467, 1467, 1467, 729, 728, 727, 726,
+ 725, 724, 723, 722, 721, 720, 718, 717, 716, 714,
+ 712, 711, 710, 709, 708, 707, 706, 705, 702, 701,
+ 698, 697, 696, 695, 694, 693, 692, 691, 690, 689,
+ 688, 687, 686, 685, 684, 683, 682, 680, 679, 678,
+ 677, 676, 675, 674, 673, 671, 670, 669, 668, 667,
+ 666, 664, 662, 661, 660, 659, 658, 657, 656, 655,
+ 654, 653, 652, 651, 650, 649, 648, 647, 646, 645,
+
+ 644, 643, 642, 641, 640, 639, 638, 637, 636, 635,
+ 634, 633, 632, 631, 630, 629, 628, 627, 625, 624,
+ 620, 619, 618, 615, 614, 613, 612, 611, 608, 607,
+ 606, 605, 604, 603, 602, 601, 600, 599, 598, 597,
+ 595, 594, 593, 592, 591, 590, 589, 588, 586, 585,
+ 583, 582, 581, 580, 579, 577, 576, 575, 573, 572,
+ 570, 569, 568, 567, 566, 565, 564, 563, 562, 560,
+ 559, 558, 557, 556, 554, 553, 552, 551, 550, 549,
+ 548, 546, 545, 544, 543, 542, 541, 540, 539, 538,
+ 537, 536, 535, 534, 533, 532, 531, 530, 529, 528,
+
+ 527, 521, 519, 516, 515, 513, 512, 511, 509, 505,
+ 504, 503, 502, 501, 500, 499, 498, 497, 496, 495,
+ 494, 493, 492, 491, 489, 488, 487, 486, 485, 484,
+ 483, 482, 481, 480, 479, 477, 475, 474, 473, 472,
+ 471, 470, 469, 468, 467, 466, 465, 464, 462, 461,
+ 460, 459, 458, 457, 456, 455, 454, 453, 452, 451,
+ 450, 449, 448, 447, 446, 445, 444, 443, 441, 440,
+ 439, 437, 436, 435, 434, 433, 432, 430, 429, 427,
+ 426, 425, 423, 422, 421, 420, 419, 418, 416, 415,
+ 410, 409, 407, 406, 405, 404, 403, 400, 397, 395,
+
+ 394, 393, 392, 390, 389, 388, 387, 386, 385, 384,
+ 383, 382, 380, 379, 378, 376, 375, 374, 373, 372,
+ 371, 369, 368, 366, 365, 364, 363, 362, 361, 360,
+ 359, 358, 354, 353, 352, 351, 350, 348, 347, 346,
+ 345, 344, 343, 342, 341, 340, 339, 338, 336, 335,
+ 334, 333, 332, 331, 330, 329, 328, 327, 326, 325,
+ 323, 322, 321, 320, 319, 316, 315, 314, 313, 312,
+ 311, 307, 305, 302, 300, 297, 294, 287, 286, 285,
+ 284, 283, 282, 280, 279, 278, 277, 276, 275, 274,
+ 273, 272, 271, 270, 269, 268, 266, 265, 264, 263,
+
+ 262, 261, 260, 259, 258, 257, 256, 255, 254, 253,
+ 251, 250, 249, 247, 246, 245, 244, 242, 241, 240,
+ 239, 238, 237, 236, 235, 234, 232, 231, 230, 229,
+ 228, 227, 226, 225, 224, 223, 222, 221, 220, 219,
+ 218, 217, 216, 215, 214, 213, 212, 211, 209, 208,
+ 207, 206, 204, 201, 199, 197, 195, 194, 189, 188,
+ 184, 176, 175, 174, 173, 172, 171, 169, 168, 167,
+ 166, 164, 162, 161, 160, 158, 157, 155, 154, 153,
+ 152, 151, 149, 148, 147, 146, 144, 143, 142, 141,
+ 140, 139, 138, 136, 135, 133, 129, 128, 127, 125,
+
+ 124, 123, 121, 120, 116, 110, 106, 105, 104, 98,
+ 97, 78, 73, 67, 64, 50, 49, 48, 43, 41,
+ 39, 38, 24, 14, 11, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1459, 1459, 1459, 1459
} ;
@@ -1743,7 +1745,7 @@ using namespace isc::dhcp;
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1747 "dhcp6_lexer.cc"
+#line 1749 "dhcp6_lexer.cc"
/* noyywrap disables automatic rewinding for the next file to parse. Since we
always parse only a single string, there's no need to do any wraps. And
using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1769,8 +1771,8 @@ using namespace isc::dhcp;
by moving it ahead by yyleng bytes. yyleng specifies the length of the
currently matched token. */
#define YY_USER_ACTION driver.loc_.columns(yyleng);
-#line 1773 "dhcp6_lexer.cc"
-#line 1774 "dhcp6_lexer.cc"
+#line 1775 "dhcp6_lexer.cc"
+#line 1776 "dhcp6_lexer.cc"
#define INITIAL 0
#define COMMENT 1
@@ -2100,7 +2102,7 @@ YY_DECL
}
-#line 2104 "dhcp6_lexer.cc"
+#line 2106 "dhcp6_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -2129,13 +2131,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1458 )
+ if ( yy_current_state >= 1460 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 1457 );
+ while ( yy_current_state != 1459 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -4109,9 +4111,9 @@ YY_RULE_SETUP
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
- return isc::dhcp::Dhcp6Parser::make_QUEUE_CONTROL(driver.loc_);
+ return isc::dhcp::Dhcp6Parser::make_DHCP_QUEUE_CONTROL(driver.loc_);
default:
- return isc::dhcp::Dhcp6Parser::make_STRING("queue-control", driver.loc_);
+ return isc::dhcp::Dhcp6Parser::make_STRING("dhcp-queue-control", driver.loc_);
}
}
YY_BREAK
@@ -4423,7 +4425,7 @@ YY_RULE_SETUP
#line 1839 "dhcp6_lexer.ll"
ECHO;
YY_BREAK
-#line 4427 "dhcp6_lexer.cc"
+#line 4429 "dhcp6_lexer.cc"
case YY_END_OF_BUFFER:
{
@@ -4742,7 +4744,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1458 )
+ if ( yy_current_state >= 1460 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4775,11 +4777,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1458 )
+ if ( yy_current_state >= 1460 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 1457);
+ yy_is_jam = (yy_current_state == 1459);
return yy_is_jam ? 0 : yy_current_state;
}
diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll
index 48a19b4c49..ddf88939db 100644
--- a/src/bin/dhcp6/dhcp6_lexer.ll
+++ b/src/bin/dhcp6/dhcp6_lexer.ll
@@ -1597,12 +1597,12 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
}
}
-\"queue-control\" {
+\"dhcp-queue-control\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
- return isc::dhcp::Dhcp6Parser::make_QUEUE_CONTROL(driver.loc_);
+ return isc::dhcp::Dhcp6Parser::make_DHCP_QUEUE_CONTROL(driver.loc_);
default:
- return isc::dhcp::Dhcp6Parser::make_STRING("queue-control", driver.loc_);
+ return isc::dhcp::Dhcp6Parser::make_STRING("dhcp-queue-control", driver.loc_);
}
}
diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc
index 8740789766..4a0fde67e2 100644
--- a/src/bin/dhcp6/dhcp6_parser.cc
+++ b/src/bin/dhcp6/dhcp6_parser.cc
@@ -3050,7 +3050,7 @@ namespace isc { namespace dhcp {
#line 1930 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr qc = yystack_[0].value.as< ElementPtr > ();
- ctx.stack_.back()->set("queue-control", qc);
+ ctx.stack_.back()->set("dhcp-queue-control", qc);
if (!qc->contains("queue-type")) {
std::stringstream msg;
@@ -4793,7 +4793,7 @@ namespace isc { namespace dhcp {
"\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"", "\"server-id\"",
"\"LLT\"", "\"EN\"", "\"LL\"", "\"identifier\"", "\"htype\"", "\"time\"",
"\"enterprise-id\"", "\"dhcp4o6-port\"", "\"control-socket\"",
- "\"socket-type\"", "\"socket-name\"", "\"queue-control\"",
+ "\"socket-type\"", "\"socket-name\"", "\"dhcp-queue-control\"",
"\"dhcp-ddns\"", "\"enable-updates\"", "\"qualifying-suffix\"",
"\"server-ip\"", "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
"\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
@@ -4883,8 +4883,8 @@ namespace isc { namespace dhcp {
"server_id_type", "$@98", "duid_type", "htype", "identifier", "$@99",
"time", "enterprise_id", "dhcp4o6_port", "control_socket", "$@100",
"control_socket_params", "control_socket_param", "socket_type", "$@101",
- "socket_name", "$@102", "queue_control", "$@103", "dhcp_ddns", "$@104",
- "sub_dhcp_ddns", "$@105", "dhcp_ddns_params", "dhcp_ddns_param",
+ "socket_name", "$@102", "dhcp_queue_control", "$@103", "dhcp_ddns",
+ "$@104", "sub_dhcp_ddns", "$@105", "dhcp_ddns_params", "dhcp_ddns_param",
"enable_updates", "qualifying_suffix", "$@106", "server_ip", "$@107",
"server_port", "sender_ip", "$@108", "sender_port", "max_queue_size",
"ncr_protocol", "$@109", "ncr_protocol_value", "ncr_format", "$@110",
diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h
index f249b7f941..2d00d89b35 100644
--- a/src/bin/dhcp6/dhcp6_parser.h
+++ b/src/bin/dhcp6/dhcp6_parser.h
@@ -462,7 +462,7 @@ namespace isc { namespace dhcp {
TOKEN_CONTROL_SOCKET = 370,
TOKEN_SOCKET_TYPE = 371,
TOKEN_SOCKET_NAME = 372,
- TOKEN_QUEUE_CONTROL = 373,
+ TOKEN_DHCP_QUEUE_CONTROL = 373,
TOKEN_DHCP_DDNS = 374,
TOKEN_ENABLE_UPDATES = 375,
TOKEN_QUALIFYING_SUFFIX = 376,
@@ -1098,7 +1098,7 @@ namespace isc { namespace dhcp {
static inline
symbol_type
- make_QUEUE_CONTROL (const location_type& l);
+ make_DHCP_QUEUE_CONTROL (const location_type& l);
static inline
symbol_type
@@ -2618,9 +2618,9 @@ namespace isc { namespace dhcp {
}
Dhcp6Parser::symbol_type
- Dhcp6Parser::make_QUEUE_CONTROL (const location_type& l)
+ Dhcp6Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
{
- return symbol_type (token::TOKEN_QUEUE_CONTROL, l);
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
}
Dhcp6Parser::symbol_type
diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy
index c43a6306b8..a16dc9568b 100644
--- a/src/bin/dhcp6/dhcp6_parser.yy
+++ b/src/bin/dhcp6/dhcp6_parser.yy
@@ -172,7 +172,7 @@ using namespace std;
SOCKET_TYPE "socket-type"
SOCKET_NAME "socket-name"
- QUEUE_CONTROL "queue-control"
+ DHCP_QUEUE_CONTROL "dhcp-queue-control"
DHCP_DDNS "dhcp-ddns"
ENABLE_UPDATES "enable-updates"
@@ -457,7 +457,7 @@ global_param: preferred_lifetime
| server_id
| dhcp4o6_port
| control_socket
- | queue_control
+ | dhcp_queue_control
| dhcp_ddns
| user_context
| comment
@@ -1923,13 +1923,13 @@ socket_name: SOCKET_NAME {
ctx.leave();
};
-// --- queue-control ---------------------------------------------
+// --- dhcp-queue-control ---------------------------------------------
-queue_control: QUEUE_CONTROL {
+dhcp_queue_control: DHCP_QUEUE_CONTROL {
ctx.enter(ctx.NO_KEYWORD);
} COLON map_value {
ElementPtr qc = $4;
- ctx.stack_.back()->set("queue-control", qc);
+ ctx.stack_.back()->set("dhcp-queue-control", qc);
if (!qc->contains("queue-type")) {
std::stringstream msg;
diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc
index 3a62f8e0ab..3ff82c89bb 100644
--- a/src/bin/dhcp6/json_config_parser.cc
+++ b/src/bin/dhcp6/json_config_parser.cc
@@ -31,7 +31,7 @@
#include <dhcpsrv/parsers/host_reservations_list_parser.h>
#include <dhcpsrv/parsers/ifaces_config_parser.h>
#include <dhcpsrv/parsers/option_data_parser.h>
-#include <dhcpsrv/parsers/queue_control_parser.h>
+#include <dhcpsrv/parsers/dhcp_queue_control_parser.h>
#include <dhcpsrv/parsers/simple_parser6.h>
#include <dhcpsrv/parsers/shared_networks_list_parser.h>
#include <dhcpsrv/parsers/sanity_checks_parser.h>
@@ -483,9 +483,9 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set,
continue;
}
- if (config_pair.first == "queue-control") {
- QueueControlParser parser(AF_INET);
- srv_config->setQueueControlInfo(parser.parse(config_pair.second));
+ if (config_pair.first == "dhcp-queue-control") {
+ DHCPQueueControlParser parser(AF_INET);
+ srv_config->setDHCPQueueControl(parser.parse(config_pair.second));
continue;
}
diff --git a/src/bin/dhcp6/parser_context.cc b/src/bin/dhcp6/parser_context.cc
index 2d35ef9d81..6323a261b6 100644
--- a/src/bin/dhcp6/parser_context.cc
+++ b/src/bin/dhcp6/parser_context.cc
@@ -174,8 +174,8 @@ Parser6Context::contextName()
return ("duid-type");
case CONTROL_SOCKET:
return ("control-socket");
- case QUEUE_CONTROL:
- return ("queue-control");
+ case DHCP_QUEUE_CONTROL:
+ return ("dhcp-queue-control");
case POOLS:
return ("pools");
case PD_POOLS:
diff --git a/src/bin/dhcp6/parser_context.h b/src/bin/dhcp6/parser_context.h
index c0247177c8..27953b9f37 100644
--- a/src/bin/dhcp6/parser_context.h
+++ b/src/bin/dhcp6/parser_context.h
@@ -271,8 +271,8 @@ public:
/// Used while parsing Dhcp6/control-socket structures.
CONTROL_SOCKET,
- /// Used while parsing Dhcp4/queue-control structures.
- QUEUE_CONTROL,
+ /// Used while parsing Dhcp4/dhcp-queue-control structures.
+ DHCP_QUEUE_CONTROL,
/// Used while parsing Dhcp6/subnet6/pools structures.
POOLS,
diff --git a/src/bin/dhcp6/tests/config_parser_unittest.cc b/src/bin/dhcp6/tests/config_parser_unittest.cc
index 3e2e3e80c9..234f062b4e 100644
--- a/src/bin/dhcp6/tests/config_parser_unittest.cc
+++ b/src/bin/dhcp6/tests/config_parser_unittest.cc
@@ -6915,61 +6915,86 @@ TEST_F(Dhcp6ParserTest, serverTag) {
ASSERT_THROW(parseDHCP6(bad_tag), std::exception);
}
-// Check whether it is possible to configure queue-control
-TEST_F(Dhcp6ParserTest, queueControl) {
- // Config without server-tag
- string config_no_queue = "{ " + genIfaceConfig() + "," +
- "\"subnet6\": [ ] "
- "}";
-
- string config_with_queue =
- "{ " + genIfaceConfig() + ", \n" +
- " \"subnet6\": [ ], \n"
- " \"queue-control\": { \n"
- " \"queue-type\": \"some-type\", \n"
- " \"capacity\": 75 \n"
- " } \n"
- "} \n";
+// Check whether it is possible to configure packet queue
+TEST_F(Dhcp6ParserTest, dhcpQueueControl) {
+ struct Scenario {
+ std::string description_;
+ std::string json_;
+ };
- string config_with_context =
- "{ " + genIfaceConfig() + ", \n" +
- " \"subnet6\": [ ], \n"
- " \"queue-control\": { \n"
+ std::vector<Scenario> scenarios = {
+ {
+ "no entry",
+ ""
+ },
+ {
+ "valid entry",
+ "{ \n"
+ " \"queue-type\": \"some-type\", \n"
+ " \"capacity\": 75 \n"
+ "} \n"
+ },
+ {
+ "valid arbitrary content",
+ "{ \n"
" \"queue-type\": \"some-type\", \n"
" \"capacity\": 90, \n"
- " \"user-context\": { \"comment\": \"some text\" } \n"
- " } \n"
- "} \n";
+ " \"user-context\": { \"comment\": \"some text\" },\n"
+ " \"random-bool\" : false, \n"
+ " \"random-int\" : 1236 \n"
+ "} \n"
+ }
+ };
// Let's check the default. It should be empty.
data::ConstElementPtr control;
- control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
+ control = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl();
ASSERT_FALSE(control);
- // Configuration with no queue should default to an emtpy control.
- configure(config_no_queue, CONTROL_RESULT_SUCCESS, "");
- control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
- ASSERT_FALSE(control);
+ // Iterate over the incorrect scenarios and verify they
+ // fail as expected. Note, we use parseDHCP6() directly
+ // as all of the errors above are enforced by the grammar.
+ data::ConstElementPtr exp_elems;
+ for (auto scenario : scenarios) {
+ SCOPED_TRACE(scenario.description_);
+ {
+ // Clear the config
+ CfgMgr::instance().clear();
- // Clear the config
- CfgMgr::instance().clear();
+ // Construct the config JSON
+ std::stringstream os;
+ os << "{ " + genIfaceConfig();
+ if (!scenario.json_.empty()) {
- // Configuration with queue should be valid.
- configure(config_with_queue, CONTROL_RESULT_SUCCESS, "");
- control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
- ASSERT_TRUE(control);
+ os << ",\n \"dhcp-queue-control\": " << scenario.json_;
+ }
- // Clear the config
- CfgMgr::instance().clear();
+ os << "} \n";
+
+ // Configure the server. This should succeed.
+ configure(os.str(), CONTROL_RESULT_SUCCESS, "");
- // Configuration with queue with context should be valid.
- configure(config_with_context, CONTROL_RESULT_SUCCESS, "");
- control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo();
- ASSERT_TRUE(control);
+ // Fetch the queue control info.
+ control = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl();
+
+ // If JSON does not contain queue control,
+ // the pointer stored in staging should be empty.
+ if (scenario.json_.empty()) {
+ ASSERT_FALSE(control);
+ continue;
+ }
+
+ // Make sure the staged config is correct.
+ ASSERT_TRUE(control);
+ ASSERT_NO_THROW(exp_elems = Element::fromJSON(scenario.json_))
+ << " cannot convert expected JSON, test is broken";
+ EXPECT_TRUE(control->equals(*exp_elems));
+ }
+ }
}
-// Check whether it is possible to configure server-tag
-TEST_F(Dhcp6ParserTest, queueControlInvalid) {
+// Check that we catch invalid dhcp-queue-control content
+TEST_F(Dhcp6ParserTest, dhcpQueueControlInvalid) {
struct Scenario {
std::string description_;
std::string json_;
@@ -6980,14 +7005,14 @@ TEST_F(Dhcp6ParserTest, queueControlInvalid) {
"not a map",
"{ " + genIfaceConfig() + ", \n" +
" \"subnet6\": [ ], \n"
- " \"queue-control\": 75 \n"
+ " \"dhcp-queue-control\": 75 \n"
"} \n"
},
{
"queue type missing",
"{ " + genIfaceConfig() + ", \n" +
" \"subnet6\": [ ], \n"
- " \"queue-control\": { \n"
+ " \"dhcp-queue-control\": { \n"
" \"capacity\": 100 \n"
" } \n"
"} \n"
@@ -6998,9 +7023,9 @@ TEST_F(Dhcp6ParserTest, queueControlInvalid) {
// fail as expected. Note, we use parseDHCP6() directly
// as all of the errors above are enforced by the grammar.
for (auto scenario : scenarios) {
- SCOPED_TRACE((scenario).description_);
+ SCOPED_TRACE(scenario.description_);
{
- EXPECT_THROW(parseDHCP6((scenario).json_), Dhcp6ParseError);
+ EXPECT_THROW(parseDHCP6(scenario.json_), Dhcp6ParseError);
}
}
}
diff --git a/src/lib/dhcp/Makefile.am b/src/lib/dhcp/Makefile.am
index 281bcda483..1b12d07fc8 100644
--- a/src/lib/dhcp/Makefile.am
+++ b/src/lib/dhcp/Makefile.am
@@ -125,10 +125,10 @@ libkea_dhcp___include_HEADERS = \
option_string.h \
option_vendor.h \
option_vendor_class.h \
- packet_queue.h \
- packet_queue_mgr.h \
- packet_queue_mgr4.h \
- packet_queue_mgr6.h \
+ packet_queue.h \
+ packet_queue_mgr.h \
+ packet_queue_mgr4.h \
+ packet_queue_mgr6.h \
pkt.h \
pkt4.h \
pkt4o6.h \
diff --git a/src/lib/dhcp/iface_mgr.cc b/src/lib/dhcp/iface_mgr.cc
index 896a034e7b..a349e1d01b 100644
--- a/src/lib/dhcp/iface_mgr.cc
+++ b/src/lib/dhcp/iface_mgr.cc
@@ -674,7 +674,7 @@ IfaceMgr::openSockets6(const uint16_t port,
void
IfaceMgr::startDHCPReceiver(const uint16_t family) {
if (receiver_thread_) {
- isc_throw(Unexpected, "a receiver thread already exits");
+ isc_throw(InvalidOperation, "a receiver thread already exists");
}
switch (family) {
@@ -970,7 +970,7 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */
}
}
- // add watch sockets.
+ // Add receiver thread watch and error sockets.
FD_SET(receive_watch_.getSelectFd(), &sockets);
if (maxfd < receive_watch_.getSelectFd()) {
maxfd = receive_watch_.getSelectFd();
@@ -980,6 +980,12 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */
maxfd = error_watch_.getSelectFd();
}
+ // Set timeout for our next select() call. If there are
+ // no DHCP packets to read, then we'll wait for a finite
+ // amount of time for an IO event. Otherwise, we'll
+ // poll (timeout = 0 secs). We need to poll, even if
+ // DHCP packets are waiting so we don't starve external
+ // sockets under heavy DHCP load.
struct timeval select_timeout;
if (getPacketQueue4()->empty()) {
select_timeout.tv_sec = timeout_sec;
@@ -996,8 +1002,7 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */
if ((result == 0) && getPacketQueue4()->empty()) {
// nothing received and timeout has been reached
- return (Pkt4Ptr()); // NULL
-
+ return (Pkt4Ptr());
} else if (result < 0) {
// In most cases we would like to know whether select() returned
// an error because of a signal being received or for some other
@@ -1013,41 +1018,43 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */
}
}
- // Check errors.
- if (FD_ISSET(error_watch_.getSelectFd(), &sockets)) {
- string msg = receiver_error_;
- error_watch_.clearReady();
- isc_throw(SocketReadError, msg);
- }
-
- // Let's find out which socket has the data
- BOOST_FOREACH(SocketCallbackInfo s, callbacks_) {
- if (!FD_ISSET(s.socket_, &sockets)) {
- continue;
+ // We only check external sockets if select detected an event.
+ if (result > 0) {
+ // Check for receiver thread read errors.
+ if (FD_ISSET(error_watch_.getSelectFd(), &sockets)) {
+ string msg = receiver_error_;
+ error_watch_.clearReady();
+ isc_throw(SocketReadError, msg);
}
- // something received over external socket
+ // Let's find out which external socket has the data
+ BOOST_FOREACH(SocketCallbackInfo s, callbacks_) {
+ if (!FD_ISSET(s.socket_, &sockets)) {
+ continue;
+ }
- // Calling the external socket's callback provides its service
- // layer access without integrating any specific features
- // in IfaceMgr
- if (s.callback_) {
- s.callback_();
- }
+ // something received over external socket
- return (Pkt4Ptr());
- }
+ // Calling the external socket's callback provides its service
+ // layer access without integrating any specific features
+ // in IfaceMgr
+ if (s.callback_) {
+ s.callback_();
+ }
- // Protected packet queue access.
- {
- Mutex::Locker lock(receiver_lock_);
- Pkt4Ptr pkt = getPacketQueue4()->dequeuePacket();
- if (!pkt) {
- receive_watch_.clearReady();
+ return (Pkt4Ptr());
}
+ }
- return (pkt);
+ // If we're here it should only be because there are DHCP packets waiting.
+ // Protected packet queue access.
+ Mutex::Locker lock(receiver_lock_);
+ Pkt4Ptr pkt = getPacketQueue4()->dequeuePacket();
+ if (!pkt) {
+ receive_watch_.clearReady();
}
+
+ return (pkt);
}
Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ ) {
@@ -1073,7 +1080,7 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */
}
}
- // add watch sockets.
+ // Add receiver thread watch and error sockets.
FD_SET(receive_watch_.getSelectFd(), &sockets);
if (maxfd < receive_watch_.getSelectFd()) {
maxfd = receive_watch_.getSelectFd();
@@ -1083,6 +1090,12 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */
maxfd = error_watch_.getSelectFd();
}
+ // Set timeout for our next select() call. If there are
+ // no DHCP packets to read, then we'll wait for a finite
+ // amount of time for an IO event. Otherwise, we'll
+ // poll (timeout = 0 secs). We need to poll, even if
+ // DHCP packets are waiting so we don't starve external
+ // sockets under heavy DHCP load.
struct timeval select_timeout;
if (getPacketQueue6()->empty()) {
select_timeout.tv_sec = timeout_sec;
@@ -1099,8 +1112,7 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */
if ((result == 0) && getPacketQueue6()->empty()) {
// nothing received and timeout has been reached
- return (Pkt6Ptr()); // NULL
-
+ return (Pkt6Ptr());
} else if (result < 0) {
// In most cases we would like to know whether select() returned
// an error because of a signal being received or for some other
@@ -1116,41 +1128,43 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */
}
}
- // Check errors.
- if (FD_ISSET(error_watch_.getSelectFd(), &sockets)) {
- string msg = receiver_error_;
- error_watch_.clearReady();
- isc_throw(SocketReadError, msg);
- }
-
- // Let's find out which socket has the data
- BOOST_FOREACH(SocketCallbackInfo s, callbacks_) {
- if (!FD_ISSET(s.socket_, &sockets)) {
- continue;
+ // We only check external sockets if select detected an event.
+ if (result > 0) {
+ // Check for receiver thread read errors.
+ if (FD_ISSET(error_watch_.getSelectFd(), &sockets)) {
+ string msg = receiver_error_;
+ error_watch_.clearReady();
+ isc_throw(SocketReadError, msg);
}
- // something received over external socket
+ // Let's find out which external socket has the data
+ BOOST_FOREACH(SocketCallbackInfo s, callbacks_) {
+ if (!FD_ISSET(s.socket_, &sockets)) {
+ continue;
+ }
- // Calling the external socket's callback provides its service
- // layer access without integrating any specific features
- // in IfaceMgr
- if (s.callback_) {
- s.callback_();
- }
+ // something received over external socket
- return (Pkt6Ptr());
- }
+ // Calling the external socket's callback provides its service
+ // layer access without integrating any specific features
+ // in IfaceMgr
+ if (s.callback_) {
+ s.callback_();
+ }
- // Protected DHCP packet queue access.
- {
- Mutex::Locker lock(receiver_lock_);
- Pkt6Ptr pkt = getPacketQueue6()->dequeuePacket();
- if (!pkt) {
- receive_watch_.clearReady();
+ return (Pkt6Ptr());
}
+ }
- return (pkt);
+ // If we're here it should only be because there are DHCP packets waiting.
+ // Protected packet queue access.
+ Mutex::Locker lock(receiver_lock_);
+ Pkt6Ptr pkt = getPacketQueue6()->dequeuePacket();
+ if (!pkt) {
+ receive_watch_.clearReady();
}
+
+ return (pkt);
}
void IfaceMgr::receiveDHCP4Packets() {
@@ -1194,7 +1208,7 @@ void IfaceMgr::receiveDHCP4Packets() {
// zero out the errno to be safe.
errno = 0;
- // Note we wait until something happen.
+ // Select with null timeouts to wait indefinetly an event
int result = select(maxfd + 1, &rd_set, 0, 0, 0);
// Re-check the watch socket.
diff --git a/src/lib/dhcp/iface_mgr.h b/src/lib/dhcp/iface_mgr.h
index c5648589a9..9a3ffdd568 100644
--- a/src/lib/dhcp/iface_mgr.h
+++ b/src/lib/dhcp/iface_mgr.h
@@ -1060,9 +1060,10 @@ public:
///
/// @throw Unexpected if the thread already exists.
void startDHCPReceiver(const uint16_t family);
-/// @brief Stops the DHCP packet receiver.
+
+ /// @brief Stops the DHCP packet receiver.
///
- /// Stops the receiver and delete the dedicated thread.
+ /// Stops the receiver and deletes the dedicated thread.
void stopDHCPReceiver();
// don't use private, we need derived classes in tests
@@ -1222,7 +1223,6 @@ private:
/// marks the "receive" watch socket ready. If an error occurs during
/// the read, the "error" watch socket is marked ready.
///
- /// @param iface interface
/// @param socket_info structure holding socket information
void receiveDHCP6Packet(const SocketInfo& socket_info);
diff --git a/src/lib/dhcp/packet_queue.h b/src/lib/dhcp/packet_queue.h
index 997efeefe2..aa427aa0c1 100644
--- a/src/lib/dhcp/packet_queue.h
+++ b/src/lib/dhcp/packet_queue.h
@@ -51,7 +51,7 @@ public:
/// Typically this is assigned by the factory that creates the
/// queue. It is the logical name used to register queue
/// implementations.
- PacketQueue(const std::string& queue_type)
+ explicit PacketQueue(const std::string& queue_type)
: queue_type_(queue_type) {}
/// Virtual destructor
@@ -59,18 +59,18 @@ public:
/// @brief Adds a packet to the queue
///
- /// Calls @c dropPacket to determine if the packet should be queued
+ /// Calls @c shouldDropPacket to determine if the packet should be queued
/// or dropped. If it should be queued it is added to the end of the
- /// specified by the "to" parameter.
+ /// queue specified by the "to" parameter.
///
/// @param packet packet to enqueue
- /// @param source socket the packet came from - this can be
+ /// @param source socket the packet came from
/// @param to end of the queue from which to remove packet(s).
/// Defaults to BACK.
///
void enqueuePacket(PacketTypePtr packet, const SocketInfo& source,
const QueueEnd& to=QueueEnd::BACK) {
- if (!dropPacket(packet, source)) {
+ if (!shouldDropPacket(packet, source)) {
pushPacket(packet, to);
}
}
@@ -94,7 +94,7 @@ public:
/// @brief Determines if a packet should be discarded.
///
- /// This function is called at the beginning of @enqueuePacket and
+ /// This function is called at the beginning of @c enqueuePacket and
/// provides an opportunity to examine the packet and its source
/// and decide whether it should be dropped or added to the queue.
/// Derivations are expected to provide implementations based on
@@ -107,23 +107,26 @@ public:
///
/// @return true if the packet should be dropped, false if it should be
/// kept.
- virtual bool dropPacket(PacketTypePtr /* packet */,
+ virtual bool shouldDropPacket(PacketTypePtr /* packet */,
const SocketInfo& /* source */) {
return (false);
}
- /// Discards packets from one end of the queue.
+ /// @brief Discards packets from one end of the queue.
///
- /// This function is called at the beginning of @c dequeuPacket and
+ /// This function is called at the beginning of @c dequeuePacket and
/// provides an opportunity to examine and discard packets from
/// the queue prior to dequeuing the next packet to be
/// processed. Derivations are expected to provide implementations
/// based on their own requirements. The default implemenation is to
- /// to simply returns without skipping any packets.
+ /// to simply return without skipping any packets.
///
/// @param from end of the queue from which packets should discarded
/// This is passed in from @c dequeuePackets.
///
+ /// @param from specifies the end of the queue from which packets
+ /// should be discarded.
+ ///
/// @return The number of packets discarded.
virtual int eatPackets(const QueueEnd& /* from */) {
return (0);
@@ -132,12 +135,19 @@ public:
/// @brief Pushes a packet onto the queue
///
/// Adds a packet onto the end of queue specified.
+ ///
+ /// @param packet packet to add to the queue
+ /// @param to specifies the end of the queue to which the packet
+ /// should be added.
virtual void pushPacket(PacketTypePtr& packet, const QueueEnd& to=QueueEnd::BACK) = 0;
/// @brief Pops a packet from the queue
///
/// Removes a packet from the end of the queue specified and returns it.
///
+ /// @param from specifies the end of the queue from which the packet
+ /// should be taken.
+ ///
/// @return A pointer to dequeued packet, or an empty pointer
/// if the queue is empty.
virtual PacketTypePtr popPacket(const QueueEnd& from=QueueEnd::FRONT) = 0;
@@ -147,6 +157,8 @@ public:
/// Returns a pointer the packet at the specified end of the
/// queue without dequeuing it.
///
+ /// @param from specifies which end of the queue to examine.
+ ///
/// @return A pointer to packet, or an empty pointer if the
/// queue is empty.
virtual const PacketTypePtr peek(const QueueEnd& from=QueueEnd::FRONT) const = 0;
@@ -161,7 +173,8 @@ public:
/// @brief Discards all packets currently in the buffer.
virtual void clear() = 0;
- /// @brief Fetches operational information about the current state of the queue
+ /// @brief Fetches operational information about the current state of
+ /// the queue
///
/// Creates and returns an ElementPtr containing a single entry,
/// "queue-type". Derivations are expected to call this method first
@@ -170,7 +183,7 @@ public:
/// for broad latitude.
///
/// @return an ElementPtr containing elements for values of interest
- virtual data::ElementPtr getInfo() {
+ virtual data::ElementPtr getInfo() const {
data::ElementPtr info = data::Element::createMap();
info->set("queue-type", data::Element::create(queue_type_));
return(info);
@@ -181,7 +194,7 @@ public:
/// This method calls @c getInfo() and then converts that into JSON text.
///
/// @return string of JSON text
- virtual std::string getInfoStr() {
+ virtual std::string getInfoStr() const {
data::ElementPtr info = getInfo();
std::ostringstream os;
info->toJSON(os);
@@ -194,7 +207,7 @@ public:
};
private:
- /// @brief Logcial name of the this queue's implementation type.
+ /// @brief Logical name of the this queue's implementation type.
std::string queue_type_;
};
@@ -214,10 +227,13 @@ typedef boost::shared_ptr<PacketQueue<Pkt6Ptr>> PacketQueue6Ptr;
template<typename PacketTypePtr>
class PacketQueueRing : public PacketQueue<PacketTypePtr> {
public:
+ /// @brief Minimum queue capacity permitted. Below five is pretty much
+ /// nonsensical.
static const size_t MIN_RING_CAPACITY = 5;
/// @brief Constructor
///
+ /// @param queue_type logical name of the queue type
/// @param queue_capacity maximum number of packets the queue can hold
PacketQueueRing(const std::string& queue_type, size_t capacity)
: PacketQueue<PacketTypePtr>(queue_type) {
@@ -230,6 +246,10 @@ public:
/// @brief Pushes a packet onto the queue
///
/// Adds a packet onto the end of queue specified.
+ ///
+ /// @param packet packet to add to the queue
+ /// @param to specifies the end of the queue to which the packet
+ /// should be added.
virtual void pushPacket(PacketTypePtr& packet, const QueueEnd& to=QueueEnd::BACK) {
if (to == QueueEnd::BACK) {
queue_.push_back(packet);
@@ -242,6 +262,9 @@ public:
///
/// Removes a packet from the end of the queue specified and returns it.
///
+ /// @param from specifies the end of the queue from which the packet
+ /// should be taken.
+ ///
/// @return A pointer to dequeued packet, or an empty pointer
/// if the queue is empty.
virtual PacketTypePtr popPacket(const QueueEnd& from = QueueEnd::FRONT) {
@@ -267,6 +290,8 @@ public:
/// Returns a pointer the packet at the specified end of the
/// queue without dequeuing it.
///
+ /// @param from specifies which end of the queue to examine.
+ ///
/// @return A pointer to packet, or an empty pointer if the
/// queue is empty.
virtual const PacketTypePtr peek(const QueueEnd& from=QueueEnd::FRONT) const {
@@ -316,7 +341,7 @@ public:
}
/// @brief Fetches pertinent information
- virtual data::ElementPtr getInfo() {
+ virtual data::ElementPtr getInfo() const {
data::ElementPtr info = PacketQueue<PacketTypePtr>::getInfo();
info->set("capacity", data::Element::create(static_cast<int64_t>(getCapacity())));
info->set("size", data::Element::create(static_cast<int64_t>(getSize())));
diff --git a/src/lib/dhcp/packet_queue_mgr.h b/src/lib/dhcp/packet_queue_mgr.h
index 02d7d917a9..e34bf261e5 100644
--- a/src/lib/dhcp/packet_queue_mgr.h
+++ b/src/lib/dhcp/packet_queue_mgr.h
@@ -68,7 +68,7 @@ public:
/// @return true if the queue type has been successfully registered, false
/// if the type already exists.
bool registerPacketQueueFactory(const std::string& queue_type,
- const Factory& factory) {
+ const Factory& factory) {
// Check if this backend has been already registered.
if (factories_.count(queue_type)) {
return (false);
diff --git a/src/lib/dhcp/packet_queue_mgr4.cc b/src/lib/dhcp/packet_queue_mgr4.cc
index b8d91fc865..a982195b8e 100644
--- a/src/lib/dhcp/packet_queue_mgr4.cc
+++ b/src/lib/dhcp/packet_queue_mgr4.cc
@@ -28,7 +28,7 @@ PacketQueueMgr4::PacketQueueMgr4() {
return (queue);
});
- // @todo default comes from ?
+ /// @todo default comes from ?
data::ElementPtr parameters = data::Element::createMap();
parameters->set("queue-type", data::Element::create("kea-ring4"));
parameters->set("capacity", data::Element::create(static_cast<long int>(500)));
@@ -48,7 +48,7 @@ PacketQueueMgr4::create() {
void
PacketQueueMgr4::destroy() {
- getPacketQueueMgr4Ptr().reset(new PacketQueueMgr4());
+ getPacketQueueMgr4Ptr().reset();
}
PacketQueueMgr4&
diff --git a/src/lib/dhcp/packet_queue_mgr6.cc b/src/lib/dhcp/packet_queue_mgr6.cc
index ccbffa42cf..77767ff162 100644
--- a/src/lib/dhcp/packet_queue_mgr6.cc
+++ b/src/lib/dhcp/packet_queue_mgr6.cc
@@ -48,7 +48,7 @@ PacketQueueMgr6::create() {
void
PacketQueueMgr6::destroy() {
- getPacketQueueMgr6Ptr().reset(new PacketQueueMgr6());
+ getPacketQueueMgr6Ptr().reset();
}
PacketQueueMgr6&
diff --git a/src/lib/dhcp/socket_info.h b/src/lib/dhcp/socket_info.h
index 7914a4e317..a2ca0563fc 100644
--- a/src/lib/dhcp/socket_info.h
+++ b/src/lib/dhcp/socket_info.h
@@ -8,6 +8,8 @@
#define DHCP_SOCKET_INFO_H
#include <asiolink/io_address.h>
+#include <cstdint>
+
namespace isc {
diff --git a/src/lib/dhcp/tests/packet_queue4_unittest.cc b/src/lib/dhcp/tests/packet_queue4_unittest.cc
index e0888e2450..1d72b4cbd8 100644
--- a/src/lib/dhcp/tests/packet_queue4_unittest.cc
+++ b/src/lib/dhcp/tests/packet_queue4_unittest.cc
@@ -19,6 +19,13 @@ using namespace isc::dhcp::test;
namespace {
+/// @brief DHCPv4 queue with implements drop and eat logic
+///
+/// This class derives from the default DHCPv4 ring queue
+/// and provies implementations for shouldDropPacket() and
+/// eatPackets(). This permits a full exercising of the
+/// PacketQueue interface as well as the basic v4 ring queue
+/// mechanics.
class TestQueue4 : public PacketQueueRing4 {
public:
/// @brief Constructor
@@ -40,7 +47,7 @@ public:
/// @param source the socket the packet came from
///
/// @return True if the packet should be dropped.
- virtual bool dropPacket(Pkt4Ptr packet,
+ virtual bool shouldDropPacket(Pkt4Ptr packet,
const SocketInfo& source) {
if (drop_enabled_) {
return ((packet->getTransid() % 2 == 0) ||
@@ -70,10 +77,6 @@ public:
return (eaten);
}
- virtual void useDefaults() {
- setCapacity(411);
- }
-
bool drop_enabled_;
int eat_count_;
};
@@ -215,7 +218,7 @@ TEST(TestQueue4, enqueueDequeueTest) {
// Verifies enqueuing operations when drop logic is enabled.
// This accesses it's queue instance as a TestQueue4, rather than
// a PacketQueue4Ptr, to provide access to TestQueue4 specifics.
-TEST(TestQueue4, dropPacketTest) {
+TEST(TestQueue4, shouldDropPacketTest) {
TestQueue4 q4(100);
EXPECT_TRUE(q4.empty());
ASSERT_FALSE(q4.drop_enabled_);
@@ -225,12 +228,12 @@ TEST(TestQueue4, dropPacketTest) {
SocketInfo sockOdd(isc::asiolink::IOAddress("127.0.0.1"), 777, 11);
// Drop is not enabled.
- // We should be able to enqueu a packet with even numbered values.
+ // We should be able to enqueue a packet with even numbered values.
Pkt4Ptr pkt(new Pkt4(DHCPDISCOVER, 1002));
ASSERT_NO_THROW(q4.enqueuePacket(pkt, sockEven));
EXPECT_EQ(1, q4.getSize());
- // We should be able to enqueu a packet with odd numbered values.
+ // We should be able to enqueue a packet with odd numbered values.
pkt.reset(new Pkt4(DHCPDISCOVER, 1003));
ASSERT_NO_THROW(q4.enqueuePacket(pkt, sockOdd));
EXPECT_EQ(2, q4.getSize());
diff --git a/src/lib/dhcp/tests/packet_queue6_unittest.cc b/src/lib/dhcp/tests/packet_queue6_unittest.cc
index d57c1ace55..47ae38cc7c 100644
--- a/src/lib/dhcp/tests/packet_queue6_unittest.cc
+++ b/src/lib/dhcp/tests/packet_queue6_unittest.cc
@@ -20,6 +20,13 @@ using namespace isc::dhcp::test;
namespace {
+/// @brief DHCPv6 queue with implements drop and eat logic
+///
+/// This class derives from the default DHCPv6 ring queue
+/// and provies implementations for shouldDropPacket() and
+/// eatPackets(). This permits a full exercising of the
+/// PacketQueue interface as well as the basic v6 ring queue
+/// mechanics.
class TestQueue6 : public PacketQueueRing6 {
public:
/// @brief Constructor
@@ -41,7 +48,7 @@ public:
/// @param source the socket the packet came from
///
/// @return True if the packet should be dropped.
- virtual bool dropPacket(Pkt6Ptr packet,
+ virtual bool shouldDropPacket(Pkt6Ptr packet,
const SocketInfo& source) {
if (drop_enabled_) {
return ((packet->getTransid() % 2 == 0) ||
@@ -71,10 +78,6 @@ public:
return (eaten);
}
- virtual void useDefaults() {
- setCapacity(411);
- }
-
bool drop_enabled_;
int eat_count_;
};
@@ -216,7 +219,7 @@ TEST(TestQueue6, enqueueDequeueTest) {
// Verifies enqueuing operations when drop logic is enabled.
// This accesses it's queue instance as a TestQueue6, rather than
// a PacketQueue6Ptr, to provide access to TestQueue6 specifics.
-TEST(TestQueue6, dropPacketTest) {
+TEST(TestQueue6, shouldDropPacketTest) {
TestQueue6 q6(100);
EXPECT_TRUE(q6.empty());
ASSERT_FALSE(q6.drop_enabled_);
@@ -226,12 +229,12 @@ TEST(TestQueue6, dropPacketTest) {
SocketInfo sockOdd(isc::asiolink::IOAddress("127.0.0.1"), 777, 11);
// Drop is not enabled.
- // We should be able to enqueu a packet with even numbered values.
+ // We should be able to enqueue a packet with even numbered values.
Pkt6Ptr pkt(new Pkt6(DHCPV6_SOLICIT, 1002));
ASSERT_NO_THROW(q6.enqueuePacket(pkt, sockEven));
EXPECT_EQ(1, q6.getSize());
- // We should be able to enqueu a packet with odd numbered values.
+ // We should be able to enqueue a packet with odd numbered values.
pkt.reset(new Pkt6(DHCPV6_SOLICIT, 1003));
ASSERT_NO_THROW(q6.enqueuePacket(pkt, sockOdd));
EXPECT_EQ(2, q6.getSize());
diff --git a/src/lib/dhcp/tests/packet_queue_mgr4_unittest.cc b/src/lib/dhcp/tests/packet_queue_mgr4_unittest.cc
index da26986ffa..8e3bbeaec3 100644
--- a/src/lib/dhcp/tests/packet_queue_mgr4_unittest.cc
+++ b/src/lib/dhcp/tests/packet_queue_mgr4_unittest.cc
@@ -17,7 +17,11 @@ using namespace isc;
using namespace isc::dhcp;
using namespace isc::dhcp::test;
-data::ElementPtr
+/// @brief Convenience function for construction a dhcp-queue-control element map
+///
+/// @param queue_type logical name of the queue implemenation type
+/// @param capacity maximum queue capacity
+data::ElementPtr
isc::dhcp::test::makeQueueConfig(const std::string& queue_type, size_t capacity) {
data::ElementPtr config = data::Element::createMap();
config->set("queue-type", data::Element::create(queue_type));
@@ -27,27 +31,38 @@ isc::dhcp::test::makeQueueConfig(const std::string& queue_type, size_t capacity)
namespace {
+/// @brief Test fixture for exercising the DHCPv4 Packet Queue Manager (PQM)
class PacketQueueMgr4Test : public ::testing::Test {
public:
+ /// @brief Constructor
+ ///
+ /// Note that it instantiates the PQM singleton.
PacketQueueMgr4Test(){
PacketQueueMgr4::create();
}
- ~PacketQueueMgr4Test(){
+ /// @brief Destructor
+ ///
+ /// It destroys the PQM singleton.
+ virtual ~PacketQueueMgr4Test(){
PacketQueueMgr4::destroy();
}
- /// @brief Registers a queue type factory
+ /// @brief Registers a queue type factory
+ ///
+ /// @param queue_type logical name of the queue implementation
+ ///
+ /// @return true if the registration succeeded, false otherwise
bool addCustomQueueType(const std::string& queue_type) {
bool did_it =
- mgr().registerPacketQueueFactory(queue_type,
+ mgr().registerPacketQueueFactory(queue_type,
[](data::ConstElementPtr parameters)
-> PacketQueue4Ptr {
std::string queue_type ;
try {
queue_type = data::SimpleParser::getString(parameters, "queue-type");
} catch (std::exception& ex) {
- isc_throw(InvalidQueueParameter,
+ isc_throw(InvalidQueueParameter,
"queue-type missing or invalid: " << ex.what());
}
@@ -55,26 +70,33 @@ public:
try {
capacity = data::SimpleParser::getInteger(parameters, "capacity");
} catch (const std::exception& ex) {
- isc_throw(InvalidQueueParameter,
+ isc_throw(InvalidQueueParameter,
"'capacity' missing or invalid: " << ex.what());
}
return (PacketQueue4Ptr(new PacketQueueRing4(queue_type, capacity)));
});
- return did_it;
+ return did_it;
}
+ /// @brief Fetches a pointer to the PQM singleton
PacketQueueMgr4& mgr() {
return (PacketQueueMgr4::instance());
};
+ /// @brief Tests the current packet queue info against expected content
+ ///
+ /// @param exp_json JSON text describing the expected packet queue info
+ /// contents
void checkMyInfo(const std::string& exp_json) {
checkInfo((mgr().getPacketQueue()), exp_json);
}
};
+// Verifies that DHCPv4 PQM provides a default queue factory
+// and packet queue.
TEST_F(PacketQueueMgr4Test, defaultQueue) {
// Verify that we have a default queue and its info is correct.
@@ -87,12 +109,13 @@ TEST_F(PacketQueueMgr4Test, defaultQueue) {
checkMyInfo("{ \"capacity\": 2000, \"queue-type\": \"kea-ring4\", \"size\": 0 }");
// We should be able to recreate the manager.
- ASSERT_NO_THROW(PacketQueueMgr4::create());
+ ASSERT_NO_THROW(PacketQueueMgr4::create());
// And be back to having the default queue.
checkMyInfo("{ \"capacity\": 500, \"queue-type\": \"kea-ring4\", \"size\": 0 }");
}
+// Verifies that PQM registry and creation of custome queue implementations.
TEST_F(PacketQueueMgr4Test, customQueueType) {
// Verify that we cannot create a queue for a non-existant type
diff --git a/src/lib/dhcp/tests/packet_queue_mgr6_unittest.cc b/src/lib/dhcp/tests/packet_queue_mgr6_unittest.cc
index 9bb02f8209..ad3ca73db5 100644
--- a/src/lib/dhcp/tests/packet_queue_mgr6_unittest.cc
+++ b/src/lib/dhcp/tests/packet_queue_mgr6_unittest.cc
@@ -19,27 +19,38 @@ using namespace isc::dhcp::test;
namespace {
+/// @brief Test fixture for exercising the DHCPv6 Packet Queue Manager (PQM)
class PacketQueueMgr6Test : public ::testing::Test {
public:
+ /// @brief Constructor
+ ///
+ /// Note that it instantiates the PQM singleton.
PacketQueueMgr6Test(){
PacketQueueMgr6::create();
}
- ~PacketQueueMgr6Test(){
+ /// @brief Destructor
+ ///
+ /// It destroys the PQM singleton.
+ virtual ~PacketQueueMgr6Test(){
PacketQueueMgr6::destroy();
}
- /// @brief Registers a queue type factory
+ /// @brief Registers a queue type factory
+ ///
+ /// @param queue_type logical name of the queue implementation
+ ///
+ /// @return true if the registration succeeded, false otherwise
bool addCustomQueueType(const std::string& queue_type) {
bool did_it =
- mgr().registerPacketQueueFactory(queue_type,
+ mgr().registerPacketQueueFactory(queue_type,
[](data::ConstElementPtr parameters)
-> PacketQueue6Ptr {
std::string queue_type ;
try {
queue_type = data::SimpleParser::getString(parameters, "queue-type");
} catch (std::exception& ex) {
- isc_throw(InvalidQueueParameter,
+ isc_throw(InvalidQueueParameter,
"queue-type missing or invalid: " << ex.what());
}
@@ -47,26 +58,33 @@ public:
try {
capacity = data::SimpleParser::getInteger(parameters, "capacity");
} catch (const std::exception& ex) {
- isc_throw(InvalidQueueParameter,
+ isc_throw(InvalidQueueParameter,
"'capacity' missing or invalid: " << ex.what());
}
return (PacketQueue6Ptr(new PacketQueueRing6(queue_type, capacity)));
});
- return did_it;
+ return did_it;
}
+ /// @brief Fetches a pointer to the PQM singleton
PacketQueueMgr6& mgr() {
return (PacketQueueMgr6::instance());
};
+ /// @brief Tests the current packet queue info against expected content
+ ///
+ /// @param exp_json JSON text describing the expected packet queue info
+ /// contents
void checkMyInfo(const std::string& exp_json) {
checkInfo((mgr().getPacketQueue()), exp_json);
}
};
+// Verifies that DHCPv6 PQM provides a default queue factory
+// and packet queue.
TEST_F(PacketQueueMgr6Test, defaultQueue) {
// Verify that we have a default queue and its info is correct.
@@ -79,12 +97,13 @@ TEST_F(PacketQueueMgr6Test, defaultQueue) {
checkMyInfo("{ \"capacity\": 2000, \"queue-type\": \"kea-ring6\", \"size\": 0 }");
// We should be able to recreate the manager.
- ASSERT_NO_THROW(PacketQueueMgr6::create());
+ ASSERT_NO_THROW(PacketQueueMgr6::create());
// And be back to having the default queue.
checkMyInfo("{ \"capacity\": 500, \"queue-type\": \"kea-ring6\", \"size\": 0 }");
}
+// Verifies that PQM registry and creation of custome queue implementations.
TEST_F(PacketQueueMgr6Test, customQueueType) {
// Verify that we cannot create a queue for a non-existant type
diff --git a/src/lib/dhcpsrv/Makefile.am b/src/lib/dhcpsrv/Makefile.am
index fc44707d84..92807d5632 100644
--- a/src/lib/dhcpsrv/Makefile.am
+++ b/src/lib/dhcpsrv/Makefile.am
@@ -47,8 +47,8 @@ EXTRA_DIST += parsers/simple_parser4.cc
EXTRA_DIST += parsers/simple_parser4.h
EXTRA_DIST += parsers/simple_parser6.cc
EXTRA_DIST += parsers/simple_parser6.h
-EXTRA_DIST += parsers/queue_control_parser.cc
-EXTRA_DIST += parsers/queue_control_parser.h
+EXTRA_DIST += parsers/dhcp_queue_control_parser.cc
+EXTRA_DIST += parsers/dhcp_queue_control_parser.h
# Devel guide diagrams
EXTRA_DIST += images/pgsql_host_data_source.svg
@@ -56,7 +56,6 @@ EXTRA_DIST += images/pgsql_host_data_source.svg
# Define rule to build logging source files from message file
alloc_engine_messages.h alloc_engine_messages.cc dhcpsrv_messages.h \
dhcpsrv_messages.cc hosts_messages.h hosts_messages.cc: s-messages
-
s-messages: alloc_engine_messages.mes dhcpsrv_messages.mes hosts_messages.mes
$(top_builddir)/src/lib/log/compiler/kea-msg-compiler $(top_srcdir)/src/lib/dhcpsrv/alloc_engine_messages.mes
touch $@
@@ -182,8 +181,8 @@ libkea_dhcpsrv_la_SOURCES += parsers/ifaces_config_parser.cc
libkea_dhcpsrv_la_SOURCES += parsers/ifaces_config_parser.h
libkea_dhcpsrv_la_SOURCES += parsers/option_data_parser.cc
libkea_dhcpsrv_la_SOURCES += parsers/option_data_parser.h
-libkea_dhcpsrv_la_SOURCES += parsers/queue_control_parser.cc
-libkea_dhcpsrv_la_SOURCES += parsers/queue_control_parser.h
+libkea_dhcpsrv_la_SOURCES += parsers/dhcp_queue_control_parser.cc
+libkea_dhcpsrv_la_SOURCES += parsers/dhcp_queue_control_parser.h
libkea_dhcpsrv_la_SOURCES += parsers/sanity_checks_parser.cc
libkea_dhcpsrv_la_SOURCES += parsers/sanity_checks_parser.h
libkea_dhcpsrv_la_SOURCES += parsers/shared_network_parser.cc
@@ -342,7 +341,7 @@ libkea_dhcpsrv_parsers_include_HEADERS = \
parsers/host_reservations_list_parser.h \
parsers/ifaces_config_parser.h \
parsers/option_data_parser.h \
- parsers/queue_control_parser.h \
+ parsers/dhcp_queue_control_parser.h \
parsers/shared_network_parser.h \
parsers/shared_networks_list_parser.h \
parsers/simple_parser4.h \
diff --git a/src/lib/dhcpsrv/parsers/queue_control_parser.cc b/src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.cc
index eb212256a9..b852683ddf 100644
--- a/src/lib/dhcpsrv/parsers/queue_control_parser.cc
+++ b/src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.cc
@@ -8,7 +8,7 @@
#include <cc/data.h>
#include <dhcpsrv/cfgmgr.h>
#include <dhcpsrv/dhcpsrv_log.h>
-#include <dhcpsrv/parsers/queue_control_parser.h>
+#include <dhcpsrv/parsers/dhcp_queue_control_parser.h>
#include <boost/foreach.hpp>
#include <string>
#include <sys/types.h>
@@ -18,25 +18,25 @@ using namespace isc::data;
namespace isc {
namespace dhcp {
-QueueControlParser::QueueControlParser(const uint16_t family)
+DHCPQueueControlParser::DHCPQueueControlParser(const uint16_t family)
: family_(family) {
// @todo Not sure we need family but just in case.
if (family_ != AF_INET && family_ != AF_INET6) {
- isc_throw(BadValue, "QueueControlParser - invalid family: "
+ isc_throw(BadValue, "DHCPQueueControlParser - invalid family: "
<< family_ << ", must be AF_INET or AF_INET6");
}
}
data::ElementPtr
-QueueControlParser::parse(const isc::data::ConstElementPtr& queue_elem) {
+DHCPQueueControlParser::parse(const isc::data::ConstElementPtr& control_elem) {
// All we really do here is verify that it is a map that
// contains at least queue-type. All other content depends
// on the packet queue implementation of that type.
- if (queue_elem->getType() != Element::map) {
- isc_throw(DhcpConfigError, "queue-control must be a map");
+ if (control_elem->getType() != Element::map) {
+ isc_throw(DhcpConfigError, "dhcp-queue-control must be a map");
}
- ConstElementPtr elem = queue_elem->get("queue-type");
+ ConstElementPtr elem = control_elem->get("queue-type");
if (!elem) {
isc_throw(DhcpConfigError, "queue-type is required");
} else {
@@ -46,7 +46,7 @@ QueueControlParser::parse(const isc::data::ConstElementPtr& queue_elem) {
}
// Return a copy of it.
- return (data::copy(queue_elem));
+ return (data::copy(control_elem));
}
} // end of namespace isc::dhcp
diff --git a/src/lib/dhcpsrv/parsers/queue_control_parser.h b/src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.h
index 0150b96eef..5d1fbe8ca0 100644
--- a/src/lib/dhcpsrv/parsers/queue_control_parser.h
+++ b/src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.h
@@ -4,8 +4,8 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#ifndef QUEUE_CONTROL_PARSER_H
-#define QUEUE_CONTROL_PARSER_H
+#ifndef DHCP_QUEUE_CONTROL_PARSER_H
+#define DHCP_QUEUE_CONTROL_PARSER_H
#include <cc/data.h>
#include <cc/simple_parser.h>
@@ -16,27 +16,27 @@ namespace dhcp {
/// @brief Parser for the configuration of DHCP packet queue controls
///
-/// This parser parses the "queue-control" parameter which holds the
+/// This parser parses the "dhcp-queue-control" parameter which holds the
/// the configurable parameters that tailor DHCP packet queue behavior.
-/// Currently "queue-control" is treated as a map of arbitrary values,
+/// Currently "dhcp-queue-control" is treated as a map of arbitrary values,
/// with only one required value, "queue-type". This was done to
/// provide latitude for differing queue implementations.
///
/// This parser is used in both DHCPv4 and DHCPv6. Derived parsers
/// are not needed.
-class QueueControlParser : public isc::data::SimpleParser {
+class DHCPQueueControlParser : public isc::data::SimpleParser {
public:
/// @brief Constructor
///
/// @param family AF_INET for DHCPv4 and AF_INET6 for DHCPv6.
- explicit QueueControlParser(const uint16_t family);
+ explicit DHCPQueueControlParser(const uint16_t family);
- /// @brief Parses content of the "queue-control".
+ /// @brief Parses content of the "dhcp-queue-control".
///
/// @param values pointer to the content of parsed values
///
- /// @return A pointer to a newly constructed QueueControl populated
+ /// @return A pointer to a newly constructed DHCPQueueControl populated
/// with the parsed values
///
/// @throw DhcpConfigError if any of the values are invalid.
@@ -50,4 +50,4 @@ private:
}
} // end of namespace isc
-#endif // QUEUE_CONTROL_PARSER_H
+#endif // DHCP_QUEUE_CONTROL_PARSER_H
diff --git a/src/lib/dhcpsrv/srv_config.cc b/src/lib/dhcpsrv/srv_config.cc
index f629d55663..12a22db902 100644
--- a/src/lib/dhcpsrv/srv_config.cc
+++ b/src/lib/dhcpsrv/srv_config.cc
@@ -392,10 +392,10 @@ SrvConfig::toElement() const {
dhcp->set("config-control", info_elem);
}
- // Set queue-control (if it exists)
- data::ConstElementPtr queue_control = getQueueControlInfo();
- if (queue_control) {
- dhcp->set("queue-control", queue_control);
+ // Set dhcp-packet-control (if it exists)
+ data::ConstElementPtr dhcp_queue_control = getDHCPQueueControl();
+ if (dhcp_queue_control) {
+ dhcp->set("dhcp-queue-control", dhcp_queue_control);
}
return (result);
diff --git a/src/lib/dhcpsrv/srv_config.h b/src/lib/dhcpsrv/srv_config.h
index 123834ff7b..5f3ce4ab62 100644
--- a/src/lib/dhcpsrv/srv_config.h
+++ b/src/lib/dhcpsrv/srv_config.h
@@ -360,16 +360,16 @@ public:
control_socket_ = control_socket;
}
- /// @brief Returns queue control information
- /// @return pointer to the queue control information
- const isc::data::ConstElementPtr getQueueControlInfo() const {
- return (queue_control_);
+ /// @brief Returns DHCP queue control information
+ /// @return pointer to the DHCP queue control information
+ const isc::data::ConstElementPtr getDHCPQueueControl() const {
+ return (dhcp_queue_control_);
}
- /// @brief Sets information about the queue control
- /// @param new queue control information
- void setQueueControlInfo(const isc::data::ConstElementPtr queue_control) {
- queue_control_ = queue_control;
+ /// @brief Sets information about the dhcp queue control
+ /// @param new dhcp queue control information
+ void setDHCPQueueControl(const isc::data::ConstElementPtr dhcp_queue_control) {
+ dhcp_queue_control_ = dhcp_queue_control;
}
/// @brief Returns pointer to the dictionary of global client
@@ -663,8 +663,8 @@ private:
/// @brief Pointer to the control-socket information
isc::data::ConstElementPtr control_socket_;
- /// @brief Pointer to the queue-control information
- isc::data::ConstElementPtr queue_control_;
+ /// @brief Pointer to the dhcp-queue-control information
+ isc::data::ConstElementPtr dhcp_queue_control_;
/// @brief Pointer to the dictionary of global client class definitions
ClientClassDictionaryPtr class_dictionary_;