1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41 /* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30802
50
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.8.2"
53
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56
57 /* Pure parsers. */
58 #define YYPURE 1
59
60 /* Push parsers. */
61 #define YYPUSH 0
62
63 /* Pull parsers. */
64 #define YYPULL 1
65
66 /* Substitute the type names. */
67 #define YYSTYPE MQTT_STYPE
68 #define YYLTYPE MQTT_LTYPE
69 /* Substitute the variable and function names. */
70 #define yyparse mqtt_parse
71 #define yylex mqtt_lex
72 #define yyerror mqtt_error
73 #define yydebug mqtt_debug
74 #define yynerrs mqtt_nerrs
75
76
77 # ifndef YY_CAST
78 # ifdef __cplusplus
79 # define YY_CAST(Type, Val) static_cast<Type> (Val)
80 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
81 # else
82 # define YY_CAST(Type, Val) ((Type) (Val))
83 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
84 # endif
85 # endif
86 # ifndef YY_NULLPTR
87 # if defined __cplusplus
88 # if 201103L <= __cplusplus
89 # define YY_NULLPTR nullptr
90 # else
91 # define YY_NULLPTR 0
92 # endif
93 # else
94 # define YY_NULLPTR ((void*)0)
95 # endif
96 # endif
97
98 /* Use api.header.include to #include this header
99 instead of duplicating it here. */
100 #ifndef YY_MQTT_MODULES_MQTT_MQTT_GRAMMAR_H_INCLUDED
101 # define YY_MQTT_MODULES_MQTT_MQTT_GRAMMAR_H_INCLUDED
102 /* Debug traces. */
103 #ifndef MQTT_DEBUG
104 # if defined YYDEBUG
105 #if YYDEBUG
106 # define MQTT_DEBUG 1
107 # else
108 # define MQTT_DEBUG 0
109 # endif
110 # else /* ! defined YYDEBUG */
111 # define MQTT_DEBUG 0
112 # endif /* ! defined YYDEBUG */
113 #endif /* ! defined MQTT_DEBUG */
114 #if MQTT_DEBUG
115 extern int mqtt_debug;
116 #endif
117 /* "%code requires" blocks. */
118 #line 24 "modules/mqtt/mqtt-grammar.y"
119
120
121 #include "mqtt-parser.h"
122
123
124 #line 125 "modules/mqtt/mqtt-grammar.c"
125
126 /* Token kinds. */
127 #ifndef MQTT_TOKENTYPE
128 # define MQTT_TOKENTYPE
129 enum mqtt_tokentype
130 {
131 MQTT_EMPTY = -2,
132 MQTT_EOF = 0, /* "end of file" */
133 MQTT_error = 256, /* error */
134 MQTT_UNDEF = 10514, /* "invalid token" */
135 LL_CONTEXT_ROOT = 1, /* LL_CONTEXT_ROOT */
136 LL_CONTEXT_DESTINATION = 2, /* LL_CONTEXT_DESTINATION */
137 LL_CONTEXT_SOURCE = 3, /* LL_CONTEXT_SOURCE */
138 LL_CONTEXT_PARSER = 4, /* LL_CONTEXT_PARSER */
139 LL_CONTEXT_REWRITE = 5, /* LL_CONTEXT_REWRITE */
140 LL_CONTEXT_FILTER = 6, /* LL_CONTEXT_FILTER */
141 LL_CONTEXT_LOG = 7, /* LL_CONTEXT_LOG */
142 LL_CONTEXT_BLOCK_DEF = 8, /* LL_CONTEXT_BLOCK_DEF */
143 LL_CONTEXT_BLOCK_REF = 9, /* LL_CONTEXT_BLOCK_REF */
144 LL_CONTEXT_BLOCK_CONTENT = 10, /* LL_CONTEXT_BLOCK_CONTENT */
145 LL_CONTEXT_BLOCK_ARG = 11, /* LL_CONTEXT_BLOCK_ARG */
146 LL_CONTEXT_PRAGMA = 12, /* LL_CONTEXT_PRAGMA */
147 LL_CONTEXT_FORMAT = 13, /* LL_CONTEXT_FORMAT */
148 LL_CONTEXT_TEMPLATE_FUNC = 14, /* LL_CONTEXT_TEMPLATE_FUNC */
149 LL_CONTEXT_INNER_DEST = 15, /* LL_CONTEXT_INNER_DEST */
150 LL_CONTEXT_INNER_SRC = 16, /* LL_CONTEXT_INNER_SRC */
151 LL_CONTEXT_CLIENT_PROTO = 17, /* LL_CONTEXT_CLIENT_PROTO */
152 LL_CONTEXT_SERVER_PROTO = 18, /* LL_CONTEXT_SERVER_PROTO */
153 LL_CONTEXT_OPTIONS = 19, /* LL_CONTEXT_OPTIONS */
154 LL_CONTEXT_CONFIG = 20, /* LL_CONTEXT_CONFIG */
155 LL_CONTEXT_MAX = 21, /* LL_CONTEXT_MAX */
156 KW_SOURCE = 10000, /* KW_SOURCE */
157 KW_FILTER = 10001, /* KW_FILTER */
158 KW_PARSER = 10002, /* KW_PARSER */
159 KW_DESTINATION = 10003, /* KW_DESTINATION */
160 KW_LOG = 10004, /* KW_LOG */
161 KW_OPTIONS = 10005, /* KW_OPTIONS */
162 KW_INCLUDE = 10006, /* KW_INCLUDE */
163 KW_BLOCK = 10007, /* KW_BLOCK */
164 KW_JUNCTION = 10008, /* KW_JUNCTION */
165 KW_CHANNEL = 10009, /* KW_CHANNEL */
166 KW_IF = 10010, /* KW_IF */
167 KW_ELSE = 10011, /* KW_ELSE */
168 KW_ELIF = 10012, /* KW_ELIF */
169 KW_INTERNAL = 10020, /* KW_INTERNAL */
170 KW_SYSLOG = 10060, /* KW_SYSLOG */
171 KW_MARK_FREQ = 10071, /* KW_MARK_FREQ */
172 KW_STATS_FREQ = 10072, /* KW_STATS_FREQ */
173 KW_STATS_LEVEL = 10073, /* KW_STATS_LEVEL */
174 KW_STATS_LIFETIME = 10074, /* KW_STATS_LIFETIME */
175 KW_FLUSH_LINES = 10075, /* KW_FLUSH_LINES */
176 KW_SUPPRESS = 10076, /* KW_SUPPRESS */
177 KW_FLUSH_TIMEOUT = 10077, /* KW_FLUSH_TIMEOUT */
178 KW_LOG_MSG_SIZE = 10078, /* KW_LOG_MSG_SIZE */
179 KW_FILE_TEMPLATE = 10079, /* KW_FILE_TEMPLATE */
180 KW_PROTO_TEMPLATE = 10080, /* KW_PROTO_TEMPLATE */
181 KW_MARK_MODE = 10081, /* KW_MARK_MODE */
182 KW_ENCODING = 10082, /* KW_ENCODING */
183 KW_TYPE = 10083, /* KW_TYPE */
184 KW_STATS_MAX_DYNAMIC = 10084, /* KW_STATS_MAX_DYNAMIC */
185 KW_MIN_IW_SIZE_PER_READER = 10085, /* KW_MIN_IW_SIZE_PER_READER */
186 KW_WORKERS = 10086, /* KW_WORKERS */
187 KW_BATCH_LINES = 10087, /* KW_BATCH_LINES */
188 KW_BATCH_TIMEOUT = 10088, /* KW_BATCH_TIMEOUT */
189 KW_TRIM_LARGE_MESSAGES = 10089, /* KW_TRIM_LARGE_MESSAGES */
190 KW_CHAIN_HOSTNAMES = 10090, /* KW_CHAIN_HOSTNAMES */
191 KW_NORMALIZE_HOSTNAMES = 10091, /* KW_NORMALIZE_HOSTNAMES */
192 KW_KEEP_HOSTNAME = 10092, /* KW_KEEP_HOSTNAME */
193 KW_CHECK_HOSTNAME = 10093, /* KW_CHECK_HOSTNAME */
194 KW_BAD_HOSTNAME = 10094, /* KW_BAD_HOSTNAME */
195 KW_KEEP_TIMESTAMP = 10100, /* KW_KEEP_TIMESTAMP */
196 KW_USE_DNS = 10110, /* KW_USE_DNS */
197 KW_USE_FQDN = 10111, /* KW_USE_FQDN */
198 KW_CUSTOM_DOMAIN = 10112, /* KW_CUSTOM_DOMAIN */
199 KW_DNS_CACHE = 10120, /* KW_DNS_CACHE */
200 KW_DNS_CACHE_SIZE = 10121, /* KW_DNS_CACHE_SIZE */
201 KW_DNS_CACHE_EXPIRE = 10130, /* KW_DNS_CACHE_EXPIRE */
202 KW_DNS_CACHE_EXPIRE_FAILED = 10131, /* KW_DNS_CACHE_EXPIRE_FAILED */
203 KW_DNS_CACHE_HOSTS = 10132, /* KW_DNS_CACHE_HOSTS */
204 KW_PERSIST_ONLY = 10140, /* KW_PERSIST_ONLY */
205 KW_USE_RCPTID = 10141, /* KW_USE_RCPTID */
206 KW_USE_UNIQID = 10142, /* KW_USE_UNIQID */
207 KW_TZ_CONVERT = 10150, /* KW_TZ_CONVERT */
208 KW_TS_FORMAT = 10151, /* KW_TS_FORMAT */
209 KW_FRAC_DIGITS = 10152, /* KW_FRAC_DIGITS */
210 KW_LOG_FIFO_SIZE = 10160, /* KW_LOG_FIFO_SIZE */
211 KW_LOG_FETCH_LIMIT = 10162, /* KW_LOG_FETCH_LIMIT */
212 KW_LOG_IW_SIZE = 10163, /* KW_LOG_IW_SIZE */
213 KW_LOG_PREFIX = 10164, /* KW_LOG_PREFIX */
214 KW_PROGRAM_OVERRIDE = 10165, /* KW_PROGRAM_OVERRIDE */
215 KW_HOST_OVERRIDE = 10166, /* KW_HOST_OVERRIDE */
216 KW_THROTTLE = 10170, /* KW_THROTTLE */
217 KW_THREADED = 10171, /* KW_THREADED */
218 KW_PASS_UNIX_CREDENTIALS = 10231, /* KW_PASS_UNIX_CREDENTIALS */
219 KW_PERSIST_NAME = 10302, /* KW_PERSIST_NAME */
220 KW_READ_OLD_RECORDS = 10304, /* KW_READ_OLD_RECORDS */
221 KW_USE_SYSLOGNG_PID = 10305, /* KW_USE_SYSLOGNG_PID */
222 KW_FLAGS = 10190, /* KW_FLAGS */
223 KW_PAD_SIZE = 10200, /* KW_PAD_SIZE */
224 KW_TIME_ZONE = 10201, /* KW_TIME_ZONE */
225 KW_RECV_TIME_ZONE = 10202, /* KW_RECV_TIME_ZONE */
226 KW_SEND_TIME_ZONE = 10203, /* KW_SEND_TIME_ZONE */
227 KW_LOCAL_TIME_ZONE = 10204, /* KW_LOCAL_TIME_ZONE */
228 KW_FORMAT = 10205, /* KW_FORMAT */
229 KW_TRUNCATE_SIZE = 10206, /* KW_TRUNCATE_SIZE */
230 KW_TIME_REOPEN = 10210, /* KW_TIME_REOPEN */
231 KW_TIME_REAP = 10211, /* KW_TIME_REAP */
232 KW_TIME_SLEEP = 10212, /* KW_TIME_SLEEP */
233 KW_TMPL_ESCAPE = 10220, /* KW_TMPL_ESCAPE */
234 KW_OPTIONAL = 10230, /* KW_OPTIONAL */
235 KW_CREATE_DIRS = 10240, /* KW_CREATE_DIRS */
236 KW_OWNER = 10250, /* KW_OWNER */
237 KW_GROUP = 10251, /* KW_GROUP */
238 KW_PERM = 10252, /* KW_PERM */
239 KW_DIR_OWNER = 10260, /* KW_DIR_OWNER */
240 KW_DIR_GROUP = 10261, /* KW_DIR_GROUP */
241 KW_DIR_PERM = 10262, /* KW_DIR_PERM */
242 KW_TEMPLATE = 10270, /* KW_TEMPLATE */
243 KW_TEMPLATE_ESCAPE = 10271, /* KW_TEMPLATE_ESCAPE */
244 KW_TEMPLATE_FUNCTION = 10272, /* KW_TEMPLATE_FUNCTION */
245 KW_DEFAULT_FACILITY = 10300, /* KW_DEFAULT_FACILITY */
246 KW_DEFAULT_SEVERITY = 10301, /* KW_DEFAULT_SEVERITY */
247 KW_PORT = 10323, /* KW_PORT */
248 KW_USE_TIME_RECVD = 10340, /* KW_USE_TIME_RECVD */
249 KW_FACILITY = 10350, /* KW_FACILITY */
250 KW_SEVERITY = 10351, /* KW_SEVERITY */
251 KW_HOST = 10352, /* KW_HOST */
252 KW_MATCH = 10353, /* KW_MATCH */
253 KW_MESSAGE = 10354, /* KW_MESSAGE */
254 KW_NETMASK = 10355, /* KW_NETMASK */
255 KW_TAGS = 10356, /* KW_TAGS */
256 KW_NETMASK6 = 10357, /* KW_NETMASK6 */
257 KW_REWRITE = 10370, /* KW_REWRITE */
258 KW_CONDITION = 10371, /* KW_CONDITION */
259 KW_VALUE = 10372, /* KW_VALUE */
260 KW_YES = 10380, /* KW_YES */
261 KW_NO = 10381, /* KW_NO */
262 KW_IFDEF = 10410, /* KW_IFDEF */
263 KW_ENDIF = 10411, /* KW_ENDIF */
264 LL_DOTDOT = 10420, /* LL_DOTDOT */
265 LL_DOTDOTDOT = 10421, /* LL_DOTDOTDOT */
266 LL_PRAGMA = 10422, /* LL_PRAGMA */
267 LL_EOL = 10423, /* LL_EOL */
268 LL_ERROR = 10424, /* LL_ERROR */
269 LL_ARROW = 10425, /* LL_ARROW */
270 LL_IDENTIFIER = 10430, /* LL_IDENTIFIER */
271 LL_NUMBER = 10431, /* LL_NUMBER */
272 LL_FLOAT = 10432, /* LL_FLOAT */
273 LL_STRING = 10433, /* LL_STRING */
274 LL_TOKEN = 10434, /* LL_TOKEN */
275 LL_BLOCK = 10435, /* LL_BLOCK */
276 KW_VALUE_PAIRS = 10500, /* KW_VALUE_PAIRS */
277 KW_EXCLUDE = 10502, /* KW_EXCLUDE */
278 KW_PAIR = 10503, /* KW_PAIR */
279 KW_KEY = 10504, /* KW_KEY */
280 KW_SCOPE = 10505, /* KW_SCOPE */
281 KW_SHIFT = 10506, /* KW_SHIFT */
282 KW_SHIFT_LEVELS = 10507, /* KW_SHIFT_LEVELS */
283 KW_REKEY = 10508, /* KW_REKEY */
284 KW_ADD_PREFIX = 10509, /* KW_ADD_PREFIX */
285 KW_REPLACE_PREFIX = 10510, /* KW_REPLACE_PREFIX */
286 KW_ON_ERROR = 10511, /* KW_ON_ERROR */
287 KW_RETRIES = 10512, /* KW_RETRIES */
288 KW_FETCH_NO_DATA_DELAY = 10513, /* KW_FETCH_NO_DATA_DELAY */
289 KW_MQTT = 10515, /* KW_MQTT */
290 KW_TOPIC = 10516, /* KW_TOPIC */
291 KW_FALLBACK_TOPIC = 10517, /* KW_FALLBACK_TOPIC */
292 KW_KEEPALIVE = 10518, /* KW_KEEPALIVE */
293 KW_ADDRESS = 10519, /* KW_ADDRESS */
294 KW_QOS = 10520, /* KW_QOS */
295 KW_CLIENT_ID = 10521, /* KW_CLIENT_ID */
296 KW_CLEANSESSION = 10522, /* KW_CLEANSESSION */
297 KW_MESSAGE_TEMPLATE = 10523, /* KW_MESSAGE_TEMPLATE */
298 KW_USERNAME = 10524, /* KW_USERNAME */
299 KW_PASSWORD = 10525, /* KW_PASSWORD */
300 KW_HTTP_PROXY = 10526, /* KW_HTTP_PROXY */
301 KW_TLS = 10527, /* KW_TLS */
302 KW_CA_DIR = 10528, /* KW_CA_DIR */
303 KW_CA_FILE = 10529, /* KW_CA_FILE */
304 KW_CERT_FILE = 10530, /* KW_CERT_FILE */
305 KW_KEY_FILE = 10531, /* KW_KEY_FILE */
306 KW_CIPHER_SUITE = 10532, /* KW_CIPHER_SUITE */
307 KW_USE_SYSTEM_CERT_STORE = 10533, /* KW_USE_SYSTEM_CERT_STORE */
308 KW_SSL_VERSION = 10534, /* KW_SSL_VERSION */
309 KW_PEER_VERIFY = 10535 /* KW_PEER_VERIFY */
310 };
311 typedef enum mqtt_tokentype mqtt_token_kind_t;
312 #endif
313 /* Token kinds. */
314 #define MQTT_EMPTY -2
315 #define MQTT_EOF 0
316 #define MQTT_error 256
317 #define MQTT_UNDEF 10514
318 #define LL_CONTEXT_ROOT 1
319 #define LL_CONTEXT_DESTINATION 2
320 #define LL_CONTEXT_SOURCE 3
321 #define LL_CONTEXT_PARSER 4
322 #define LL_CONTEXT_REWRITE 5
323 #define LL_CONTEXT_FILTER 6
324 #define LL_CONTEXT_LOG 7
325 #define LL_CONTEXT_BLOCK_DEF 8
326 #define LL_CONTEXT_BLOCK_REF 9
327 #define LL_CONTEXT_BLOCK_CONTENT 10
328 #define LL_CONTEXT_BLOCK_ARG 11
329 #define LL_CONTEXT_PRAGMA 12
330 #define LL_CONTEXT_FORMAT 13
331 #define LL_CONTEXT_TEMPLATE_FUNC 14
332 #define LL_CONTEXT_INNER_DEST 15
333 #define LL_CONTEXT_INNER_SRC 16
334 #define LL_CONTEXT_CLIENT_PROTO 17
335 #define LL_CONTEXT_SERVER_PROTO 18
336 #define LL_CONTEXT_OPTIONS 19
337 #define LL_CONTEXT_CONFIG 20
338 #define LL_CONTEXT_MAX 21
339 #define KW_SOURCE 10000
340 #define KW_FILTER 10001
341 #define KW_PARSER 10002
342 #define KW_DESTINATION 10003
343 #define KW_LOG 10004
344 #define KW_OPTIONS 10005
345 #define KW_INCLUDE 10006
346 #define KW_BLOCK 10007
347 #define KW_JUNCTION 10008
348 #define KW_CHANNEL 10009
349 #define KW_IF 10010
350 #define KW_ELSE 10011
351 #define KW_ELIF 10012
352 #define KW_INTERNAL 10020
353 #define KW_SYSLOG 10060
354 #define KW_MARK_FREQ 10071
355 #define KW_STATS_FREQ 10072
356 #define KW_STATS_LEVEL 10073
357 #define KW_STATS_LIFETIME 10074
358 #define KW_FLUSH_LINES 10075
359 #define KW_SUPPRESS 10076
360 #define KW_FLUSH_TIMEOUT 10077
361 #define KW_LOG_MSG_SIZE 10078
362 #define KW_FILE_TEMPLATE 10079
363 #define KW_PROTO_TEMPLATE 10080
364 #define KW_MARK_MODE 10081
365 #define KW_ENCODING 10082
366 #define KW_TYPE 10083
367 #define KW_STATS_MAX_DYNAMIC 10084
368 #define KW_MIN_IW_SIZE_PER_READER 10085
369 #define KW_WORKERS 10086
370 #define KW_BATCH_LINES 10087
371 #define KW_BATCH_TIMEOUT 10088
372 #define KW_TRIM_LARGE_MESSAGES 10089
373 #define KW_CHAIN_HOSTNAMES 10090
374 #define KW_NORMALIZE_HOSTNAMES 10091
375 #define KW_KEEP_HOSTNAME 10092
376 #define KW_CHECK_HOSTNAME 10093
377 #define KW_BAD_HOSTNAME 10094
378 #define KW_KEEP_TIMESTAMP 10100
379 #define KW_USE_DNS 10110
380 #define KW_USE_FQDN 10111
381 #define KW_CUSTOM_DOMAIN 10112
382 #define KW_DNS_CACHE 10120
383 #define KW_DNS_CACHE_SIZE 10121
384 #define KW_DNS_CACHE_EXPIRE 10130
385 #define KW_DNS_CACHE_EXPIRE_FAILED 10131
386 #define KW_DNS_CACHE_HOSTS 10132
387 #define KW_PERSIST_ONLY 10140
388 #define KW_USE_RCPTID 10141
389 #define KW_USE_UNIQID 10142
390 #define KW_TZ_CONVERT 10150
391 #define KW_TS_FORMAT 10151
392 #define KW_FRAC_DIGITS 10152
393 #define KW_LOG_FIFO_SIZE 10160
394 #define KW_LOG_FETCH_LIMIT 10162
395 #define KW_LOG_IW_SIZE 10163
396 #define KW_LOG_PREFIX 10164
397 #define KW_PROGRAM_OVERRIDE 10165
398 #define KW_HOST_OVERRIDE 10166
399 #define KW_THROTTLE 10170
400 #define KW_THREADED 10171
401 #define KW_PASS_UNIX_CREDENTIALS 10231
402 #define KW_PERSIST_NAME 10302
403 #define KW_READ_OLD_RECORDS 10304
404 #define KW_USE_SYSLOGNG_PID 10305
405 #define KW_FLAGS 10190
406 #define KW_PAD_SIZE 10200
407 #define KW_TIME_ZONE 10201
408 #define KW_RECV_TIME_ZONE 10202
409 #define KW_SEND_TIME_ZONE 10203
410 #define KW_LOCAL_TIME_ZONE 10204
411 #define KW_FORMAT 10205
412 #define KW_TRUNCATE_SIZE 10206
413 #define KW_TIME_REOPEN 10210
414 #define KW_TIME_REAP 10211
415 #define KW_TIME_SLEEP 10212
416 #define KW_TMPL_ESCAPE 10220
417 #define KW_OPTIONAL 10230
418 #define KW_CREATE_DIRS 10240
419 #define KW_OWNER 10250
420 #define KW_GROUP 10251
421 #define KW_PERM 10252
422 #define KW_DIR_OWNER 10260
423 #define KW_DIR_GROUP 10261
424 #define KW_DIR_PERM 10262
425 #define KW_TEMPLATE 10270
426 #define KW_TEMPLATE_ESCAPE 10271
427 #define KW_TEMPLATE_FUNCTION 10272
428 #define KW_DEFAULT_FACILITY 10300
429 #define KW_DEFAULT_SEVERITY 10301
430 #define KW_PORT 10323
431 #define KW_USE_TIME_RECVD 10340
432 #define KW_FACILITY 10350
433 #define KW_SEVERITY 10351
434 #define KW_HOST 10352
435 #define KW_MATCH 10353
436 #define KW_MESSAGE 10354
437 #define KW_NETMASK 10355
438 #define KW_TAGS 10356
439 #define KW_NETMASK6 10357
440 #define KW_REWRITE 10370
441 #define KW_CONDITION 10371
442 #define KW_VALUE 10372
443 #define KW_YES 10380
444 #define KW_NO 10381
445 #define KW_IFDEF 10410
446 #define KW_ENDIF 10411
447 #define LL_DOTDOT 10420
448 #define LL_DOTDOTDOT 10421
449 #define LL_PRAGMA 10422
450 #define LL_EOL 10423
451 #define LL_ERROR 10424
452 #define LL_ARROW 10425
453 #define LL_IDENTIFIER 10430
454 #define LL_NUMBER 10431
455 #define LL_FLOAT 10432
456 #define LL_STRING 10433
457 #define LL_TOKEN 10434
458 #define LL_BLOCK 10435
459 #define KW_VALUE_PAIRS 10500
460 #define KW_EXCLUDE 10502
461 #define KW_PAIR 10503
462 #define KW_KEY 10504
463 #define KW_SCOPE 10505
464 #define KW_SHIFT 10506
465 #define KW_SHIFT_LEVELS 10507
466 #define KW_REKEY 10508
467 #define KW_ADD_PREFIX 10509
468 #define KW_REPLACE_PREFIX 10510
469 #define KW_ON_ERROR 10511
470 #define KW_RETRIES 10512
471 #define KW_FETCH_NO_DATA_DELAY 10513
472 #define KW_MQTT 10515
473 #define KW_TOPIC 10516
474 #define KW_FALLBACK_TOPIC 10517
475 #define KW_KEEPALIVE 10518
476 #define KW_ADDRESS 10519
477 #define KW_QOS 10520
478 #define KW_CLIENT_ID 10521
479 #define KW_CLEANSESSION 10522
480 #define KW_MESSAGE_TEMPLATE 10523
481 #define KW_USERNAME 10524
482 #define KW_PASSWORD 10525
483 #define KW_HTTP_PROXY 10526
484 #define KW_TLS 10527
485 #define KW_CA_DIR 10528
486 #define KW_CA_FILE 10529
487 #define KW_CERT_FILE 10530
488 #define KW_KEY_FILE 10531
489 #define KW_CIPHER_SUITE 10532
490 #define KW_USE_SYSTEM_CERT_STORE 10533
491 #define KW_SSL_VERSION 10534
492 #define KW_PEER_VERIFY 10535
493
494 /* Value type. */
495 #if ! defined MQTT_STYPE && ! defined MQTT_STYPE_IS_DECLARED
496 typedef CFG_STYPE MQTT_STYPE;
497 # define MQTT_STYPE_IS_TRIVIAL 1
498 # define MQTT_STYPE_IS_DECLARED 1
499 #endif
500
501 /* Location type. */
502 typedef CFG_LTYPE MQTT_LTYPE;
503
504
505
506
507 int mqtt_parse (CfgLexer *lexer, LogDriver **instance, gpointer arg);
508
509
510 #endif /* !YY_MQTT_MODULES_MQTT_MQTT_GRAMMAR_H_INCLUDED */
511 /* Symbol kind. */
512 enum yysymbol_kind_t
513 {
514 YYSYMBOL_YYEMPTY = -2,
515 YYSYMBOL_YYEOF = 0, /* "end of file" */
516 YYSYMBOL_YYerror = 1, /* error */
517 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
518 YYSYMBOL_LL_CONTEXT_ROOT = 3, /* LL_CONTEXT_ROOT */
519 YYSYMBOL_LL_CONTEXT_DESTINATION = 4, /* LL_CONTEXT_DESTINATION */
520 YYSYMBOL_LL_CONTEXT_SOURCE = 5, /* LL_CONTEXT_SOURCE */
521 YYSYMBOL_LL_CONTEXT_PARSER = 6, /* LL_CONTEXT_PARSER */
522 YYSYMBOL_LL_CONTEXT_REWRITE = 7, /* LL_CONTEXT_REWRITE */
523 YYSYMBOL_LL_CONTEXT_FILTER = 8, /* LL_CONTEXT_FILTER */
524 YYSYMBOL_LL_CONTEXT_LOG = 9, /* LL_CONTEXT_LOG */
525 YYSYMBOL_LL_CONTEXT_BLOCK_DEF = 10, /* LL_CONTEXT_BLOCK_DEF */
526 YYSYMBOL_LL_CONTEXT_BLOCK_REF = 11, /* LL_CONTEXT_BLOCK_REF */
527 YYSYMBOL_LL_CONTEXT_BLOCK_CONTENT = 12, /* LL_CONTEXT_BLOCK_CONTENT */
528 YYSYMBOL_LL_CONTEXT_BLOCK_ARG = 13, /* LL_CONTEXT_BLOCK_ARG */
529 YYSYMBOL_LL_CONTEXT_PRAGMA = 14, /* LL_CONTEXT_PRAGMA */
530 YYSYMBOL_LL_CONTEXT_FORMAT = 15, /* LL_CONTEXT_FORMAT */
531 YYSYMBOL_LL_CONTEXT_TEMPLATE_FUNC = 16, /* LL_CONTEXT_TEMPLATE_FUNC */
532 YYSYMBOL_LL_CONTEXT_INNER_DEST = 17, /* LL_CONTEXT_INNER_DEST */
533 YYSYMBOL_LL_CONTEXT_INNER_SRC = 18, /* LL_CONTEXT_INNER_SRC */
534 YYSYMBOL_LL_CONTEXT_CLIENT_PROTO = 19, /* LL_CONTEXT_CLIENT_PROTO */
535 YYSYMBOL_LL_CONTEXT_SERVER_PROTO = 20, /* LL_CONTEXT_SERVER_PROTO */
536 YYSYMBOL_LL_CONTEXT_OPTIONS = 21, /* LL_CONTEXT_OPTIONS */
537 YYSYMBOL_LL_CONTEXT_CONFIG = 22, /* LL_CONTEXT_CONFIG */
538 YYSYMBOL_LL_CONTEXT_MAX = 23, /* LL_CONTEXT_MAX */
539 YYSYMBOL_KW_SOURCE = 24, /* KW_SOURCE */
540 YYSYMBOL_KW_FILTER = 25, /* KW_FILTER */
541 YYSYMBOL_KW_PARSER = 26, /* KW_PARSER */
542 YYSYMBOL_KW_DESTINATION = 27, /* KW_DESTINATION */
543 YYSYMBOL_KW_LOG = 28, /* KW_LOG */
544 YYSYMBOL_KW_OPTIONS = 29, /* KW_OPTIONS */
545 YYSYMBOL_KW_INCLUDE = 30, /* KW_INCLUDE */
546 YYSYMBOL_KW_BLOCK = 31, /* KW_BLOCK */
547 YYSYMBOL_KW_JUNCTION = 32, /* KW_JUNCTION */
548 YYSYMBOL_KW_CHANNEL = 33, /* KW_CHANNEL */
549 YYSYMBOL_KW_IF = 34, /* KW_IF */
550 YYSYMBOL_KW_ELSE = 35, /* KW_ELSE */
551 YYSYMBOL_KW_ELIF = 36, /* KW_ELIF */
552 YYSYMBOL_KW_INTERNAL = 37, /* KW_INTERNAL */
553 YYSYMBOL_KW_SYSLOG = 38, /* KW_SYSLOG */
554 YYSYMBOL_KW_MARK_FREQ = 39, /* KW_MARK_FREQ */
555 YYSYMBOL_KW_STATS_FREQ = 40, /* KW_STATS_FREQ */
556 YYSYMBOL_KW_STATS_LEVEL = 41, /* KW_STATS_LEVEL */
557 YYSYMBOL_KW_STATS_LIFETIME = 42, /* KW_STATS_LIFETIME */
558 YYSYMBOL_KW_FLUSH_LINES = 43, /* KW_FLUSH_LINES */
559 YYSYMBOL_KW_SUPPRESS = 44, /* KW_SUPPRESS */
560 YYSYMBOL_KW_FLUSH_TIMEOUT = 45, /* KW_FLUSH_TIMEOUT */
561 YYSYMBOL_KW_LOG_MSG_SIZE = 46, /* KW_LOG_MSG_SIZE */
562 YYSYMBOL_KW_FILE_TEMPLATE = 47, /* KW_FILE_TEMPLATE */
563 YYSYMBOL_KW_PROTO_TEMPLATE = 48, /* KW_PROTO_TEMPLATE */
564 YYSYMBOL_KW_MARK_MODE = 49, /* KW_MARK_MODE */
565 YYSYMBOL_KW_ENCODING = 50, /* KW_ENCODING */
566 YYSYMBOL_KW_TYPE = 51, /* KW_TYPE */
567 YYSYMBOL_KW_STATS_MAX_DYNAMIC = 52, /* KW_STATS_MAX_DYNAMIC */
568 YYSYMBOL_KW_MIN_IW_SIZE_PER_READER = 53, /* KW_MIN_IW_SIZE_PER_READER */
569 YYSYMBOL_KW_WORKERS = 54, /* KW_WORKERS */
570 YYSYMBOL_KW_BATCH_LINES = 55, /* KW_BATCH_LINES */
571 YYSYMBOL_KW_BATCH_TIMEOUT = 56, /* KW_BATCH_TIMEOUT */
572 YYSYMBOL_KW_TRIM_LARGE_MESSAGES = 57, /* KW_TRIM_LARGE_MESSAGES */
573 YYSYMBOL_KW_CHAIN_HOSTNAMES = 58, /* KW_CHAIN_HOSTNAMES */
574 YYSYMBOL_KW_NORMALIZE_HOSTNAMES = 59, /* KW_NORMALIZE_HOSTNAMES */
575 YYSYMBOL_KW_KEEP_HOSTNAME = 60, /* KW_KEEP_HOSTNAME */
576 YYSYMBOL_KW_CHECK_HOSTNAME = 61, /* KW_CHECK_HOSTNAME */
577 YYSYMBOL_KW_BAD_HOSTNAME = 62, /* KW_BAD_HOSTNAME */
578 YYSYMBOL_KW_KEEP_TIMESTAMP = 63, /* KW_KEEP_TIMESTAMP */
579 YYSYMBOL_KW_USE_DNS = 64, /* KW_USE_DNS */
580 YYSYMBOL_KW_USE_FQDN = 65, /* KW_USE_FQDN */
581 YYSYMBOL_KW_CUSTOM_DOMAIN = 66, /* KW_CUSTOM_DOMAIN */
582 YYSYMBOL_KW_DNS_CACHE = 67, /* KW_DNS_CACHE */
583 YYSYMBOL_KW_DNS_CACHE_SIZE = 68, /* KW_DNS_CACHE_SIZE */
584 YYSYMBOL_KW_DNS_CACHE_EXPIRE = 69, /* KW_DNS_CACHE_EXPIRE */
585 YYSYMBOL_KW_DNS_CACHE_EXPIRE_FAILED = 70, /* KW_DNS_CACHE_EXPIRE_FAILED */
586 YYSYMBOL_KW_DNS_CACHE_HOSTS = 71, /* KW_DNS_CACHE_HOSTS */
587 YYSYMBOL_KW_PERSIST_ONLY = 72, /* KW_PERSIST_ONLY */
588 YYSYMBOL_KW_USE_RCPTID = 73, /* KW_USE_RCPTID */
589 YYSYMBOL_KW_USE_UNIQID = 74, /* KW_USE_UNIQID */
590 YYSYMBOL_KW_TZ_CONVERT = 75, /* KW_TZ_CONVERT */
591 YYSYMBOL_KW_TS_FORMAT = 76, /* KW_TS_FORMAT */
592 YYSYMBOL_KW_FRAC_DIGITS = 77, /* KW_FRAC_DIGITS */
593 YYSYMBOL_KW_LOG_FIFO_SIZE = 78, /* KW_LOG_FIFO_SIZE */
594 YYSYMBOL_KW_LOG_FETCH_LIMIT = 79, /* KW_LOG_FETCH_LIMIT */
595 YYSYMBOL_KW_LOG_IW_SIZE = 80, /* KW_LOG_IW_SIZE */
596 YYSYMBOL_KW_LOG_PREFIX = 81, /* KW_LOG_PREFIX */
597 YYSYMBOL_KW_PROGRAM_OVERRIDE = 82, /* KW_PROGRAM_OVERRIDE */
598 YYSYMBOL_KW_HOST_OVERRIDE = 83, /* KW_HOST_OVERRIDE */
599 YYSYMBOL_KW_THROTTLE = 84, /* KW_THROTTLE */
600 YYSYMBOL_KW_THREADED = 85, /* KW_THREADED */
601 YYSYMBOL_KW_PASS_UNIX_CREDENTIALS = 86, /* KW_PASS_UNIX_CREDENTIALS */
602 YYSYMBOL_KW_PERSIST_NAME = 87, /* KW_PERSIST_NAME */
603 YYSYMBOL_KW_READ_OLD_RECORDS = 88, /* KW_READ_OLD_RECORDS */
604 YYSYMBOL_KW_USE_SYSLOGNG_PID = 89, /* KW_USE_SYSLOGNG_PID */
605 YYSYMBOL_KW_FLAGS = 90, /* KW_FLAGS */
606 YYSYMBOL_KW_PAD_SIZE = 91, /* KW_PAD_SIZE */
607 YYSYMBOL_KW_TIME_ZONE = 92, /* KW_TIME_ZONE */
608 YYSYMBOL_KW_RECV_TIME_ZONE = 93, /* KW_RECV_TIME_ZONE */
609 YYSYMBOL_KW_SEND_TIME_ZONE = 94, /* KW_SEND_TIME_ZONE */
610 YYSYMBOL_KW_LOCAL_TIME_ZONE = 95, /* KW_LOCAL_TIME_ZONE */
611 YYSYMBOL_KW_FORMAT = 96, /* KW_FORMAT */
612 YYSYMBOL_KW_TRUNCATE_SIZE = 97, /* KW_TRUNCATE_SIZE */
613 YYSYMBOL_KW_TIME_REOPEN = 98, /* KW_TIME_REOPEN */
614 YYSYMBOL_KW_TIME_REAP = 99, /* KW_TIME_REAP */
615 YYSYMBOL_KW_TIME_SLEEP = 100, /* KW_TIME_SLEEP */
616 YYSYMBOL_KW_TMPL_ESCAPE = 101, /* KW_TMPL_ESCAPE */
617 YYSYMBOL_KW_OPTIONAL = 102, /* KW_OPTIONAL */
618 YYSYMBOL_KW_CREATE_DIRS = 103, /* KW_CREATE_DIRS */
619 YYSYMBOL_KW_OWNER = 104, /* KW_OWNER */
620 YYSYMBOL_KW_GROUP = 105, /* KW_GROUP */
621 YYSYMBOL_KW_PERM = 106, /* KW_PERM */
622 YYSYMBOL_KW_DIR_OWNER = 107, /* KW_DIR_OWNER */
623 YYSYMBOL_KW_DIR_GROUP = 108, /* KW_DIR_GROUP */
624 YYSYMBOL_KW_DIR_PERM = 109, /* KW_DIR_PERM */
625 YYSYMBOL_KW_TEMPLATE = 110, /* KW_TEMPLATE */
626 YYSYMBOL_KW_TEMPLATE_ESCAPE = 111, /* KW_TEMPLATE_ESCAPE */
627 YYSYMBOL_KW_TEMPLATE_FUNCTION = 112, /* KW_TEMPLATE_FUNCTION */
628 YYSYMBOL_KW_DEFAULT_FACILITY = 113, /* KW_DEFAULT_FACILITY */
629 YYSYMBOL_KW_DEFAULT_SEVERITY = 114, /* KW_DEFAULT_SEVERITY */
630 YYSYMBOL_KW_PORT = 115, /* KW_PORT */
631 YYSYMBOL_KW_USE_TIME_RECVD = 116, /* KW_USE_TIME_RECVD */
632 YYSYMBOL_KW_FACILITY = 117, /* KW_FACILITY */
633 YYSYMBOL_KW_SEVERITY = 118, /* KW_SEVERITY */
634 YYSYMBOL_KW_HOST = 119, /* KW_HOST */
635 YYSYMBOL_KW_MATCH = 120, /* KW_MATCH */
636 YYSYMBOL_KW_MESSAGE = 121, /* KW_MESSAGE */
637 YYSYMBOL_KW_NETMASK = 122, /* KW_NETMASK */
638 YYSYMBOL_KW_TAGS = 123, /* KW_TAGS */
639 YYSYMBOL_KW_NETMASK6 = 124, /* KW_NETMASK6 */
640 YYSYMBOL_KW_REWRITE = 125, /* KW_REWRITE */
641 YYSYMBOL_KW_CONDITION = 126, /* KW_CONDITION */
642 YYSYMBOL_KW_VALUE = 127, /* KW_VALUE */
643 YYSYMBOL_KW_YES = 128, /* KW_YES */
644 YYSYMBOL_KW_NO = 129, /* KW_NO */
645 YYSYMBOL_KW_IFDEF = 130, /* KW_IFDEF */
646 YYSYMBOL_KW_ENDIF = 131, /* KW_ENDIF */
647 YYSYMBOL_LL_DOTDOT = 132, /* LL_DOTDOT */
648 YYSYMBOL_LL_DOTDOTDOT = 133, /* LL_DOTDOTDOT */
649 YYSYMBOL_LL_PRAGMA = 134, /* LL_PRAGMA */
650 YYSYMBOL_LL_EOL = 135, /* LL_EOL */
651 YYSYMBOL_LL_ERROR = 136, /* LL_ERROR */
652 YYSYMBOL_LL_ARROW = 137, /* LL_ARROW */
653 YYSYMBOL_LL_IDENTIFIER = 138, /* LL_IDENTIFIER */
654 YYSYMBOL_LL_NUMBER = 139, /* LL_NUMBER */
655 YYSYMBOL_LL_FLOAT = 140, /* LL_FLOAT */
656 YYSYMBOL_LL_STRING = 141, /* LL_STRING */
657 YYSYMBOL_LL_TOKEN = 142, /* LL_TOKEN */
658 YYSYMBOL_LL_BLOCK = 143, /* LL_BLOCK */
659 YYSYMBOL_KW_VALUE_PAIRS = 144, /* KW_VALUE_PAIRS */
660 YYSYMBOL_KW_EXCLUDE = 145, /* KW_EXCLUDE */
661 YYSYMBOL_KW_PAIR = 146, /* KW_PAIR */
662 YYSYMBOL_KW_KEY = 147, /* KW_KEY */
663 YYSYMBOL_KW_SCOPE = 148, /* KW_SCOPE */
664 YYSYMBOL_KW_SHIFT = 149, /* KW_SHIFT */
665 YYSYMBOL_KW_SHIFT_LEVELS = 150, /* KW_SHIFT_LEVELS */
666 YYSYMBOL_KW_REKEY = 151, /* KW_REKEY */
667 YYSYMBOL_KW_ADD_PREFIX = 152, /* KW_ADD_PREFIX */
668 YYSYMBOL_KW_REPLACE_PREFIX = 153, /* KW_REPLACE_PREFIX */
669 YYSYMBOL_KW_ON_ERROR = 154, /* KW_ON_ERROR */
670 YYSYMBOL_KW_RETRIES = 155, /* KW_RETRIES */
671 YYSYMBOL_KW_FETCH_NO_DATA_DELAY = 156, /* KW_FETCH_NO_DATA_DELAY */
672 YYSYMBOL_KW_MQTT = 157, /* KW_MQTT */
673 YYSYMBOL_KW_TOPIC = 158, /* KW_TOPIC */
674 YYSYMBOL_KW_FALLBACK_TOPIC = 159, /* KW_FALLBACK_TOPIC */
675 YYSYMBOL_KW_KEEPALIVE = 160, /* KW_KEEPALIVE */
676 YYSYMBOL_KW_ADDRESS = 161, /* KW_ADDRESS */
677 YYSYMBOL_KW_QOS = 162, /* KW_QOS */
678 YYSYMBOL_KW_CLIENT_ID = 163, /* KW_CLIENT_ID */
679 YYSYMBOL_KW_CLEANSESSION = 164, /* KW_CLEANSESSION */
680 YYSYMBOL_KW_MESSAGE_TEMPLATE = 165, /* KW_MESSAGE_TEMPLATE */
681 YYSYMBOL_KW_USERNAME = 166, /* KW_USERNAME */
682 YYSYMBOL_KW_PASSWORD = 167, /* KW_PASSWORD */
683 YYSYMBOL_KW_HTTP_PROXY = 168, /* KW_HTTP_PROXY */
684 YYSYMBOL_KW_TLS = 169, /* KW_TLS */
685 YYSYMBOL_KW_CA_DIR = 170, /* KW_CA_DIR */
686 YYSYMBOL_KW_CA_FILE = 171, /* KW_CA_FILE */
687 YYSYMBOL_KW_CERT_FILE = 172, /* KW_CERT_FILE */
688 YYSYMBOL_KW_KEY_FILE = 173, /* KW_KEY_FILE */
689 YYSYMBOL_KW_CIPHER_SUITE = 174, /* KW_CIPHER_SUITE */
690 YYSYMBOL_KW_USE_SYSTEM_CERT_STORE = 175, /* KW_USE_SYSTEM_CERT_STORE */
691 YYSYMBOL_KW_SSL_VERSION = 176, /* KW_SSL_VERSION */
692 YYSYMBOL_KW_PEER_VERIFY = 177, /* KW_PEER_VERIFY */
693 YYSYMBOL_178_ = 178, /* '(' */
694 YYSYMBOL_179_ = 179, /* ')' */
695 YYSYMBOL_180_ = 180, /* '{' */
696 YYSYMBOL_181_ = 181, /* '}' */
697 YYSYMBOL_182_ = 182, /* ';' */
698 YYSYMBOL_183_ = 183, /* ':' */
699 YYSYMBOL_YYACCEPT = 184, /* $accept */
700 YYSYMBOL_start = 185, /* start */
701 YYSYMBOL_186_1 = 186, /* $@1 */
702 YYSYMBOL_187_2 = 187, /* $@2 */
703 YYSYMBOL_mqtt_destination_options = 188, /* mqtt_destination_options */
704 YYSYMBOL_mqtt_destination_option = 189, /* mqtt_destination_option */
705 YYSYMBOL_190_3 = 190, /* $@3 */
706 YYSYMBOL_mqtt_source_options = 191, /* mqtt_source_options */
707 YYSYMBOL_mqtt_source_option = 192, /* mqtt_source_option */
708 YYSYMBOL_mqtt_option = 193, /* mqtt_option */
709 YYSYMBOL_mqtt_tls_options = 194, /* mqtt_tls_options */
710 YYSYMBOL_mqtt_tls_option = 195, /* mqtt_tls_option */
711 YYSYMBOL_template_content_inner = 196, /* template_content_inner */
712 YYSYMBOL_template_content = 197, /* template_content */
713 YYSYMBOL_198_9 = 198, /* $@9 */
714 YYSYMBOL_string = 199, /* string */
715 YYSYMBOL_yesno = 200, /* yesno */
716 YYSYMBOL_dnsmode = 201, /* dnsmode */
717 YYSYMBOL_nonnegative_integer64 = 202, /* nonnegative_integer64 */
718 YYSYMBOL_nonnegative_integer = 203, /* nonnegative_integer */
719 YYSYMBOL_positive_integer64 = 204, /* positive_integer64 */
720 YYSYMBOL_positive_integer = 205, /* positive_integer */
721 YYSYMBOL_path = 206, /* path */
722 YYSYMBOL_path_check = 207, /* path_check */
723 YYSYMBOL_path_secret = 208, /* path_secret */
724 YYSYMBOL_string_list = 209, /* string_list */
725 YYSYMBOL_string_list_build = 210, /* string_list_build */
726 YYSYMBOL_severity_string = 211, /* severity_string */
727 YYSYMBOL_facility_string = 212, /* facility_string */
728 YYSYMBOL_driver_option = 213, /* driver_option */
729 YYSYMBOL_inner_source = 214, /* inner_source */
730 YYSYMBOL_source_driver_option = 215, /* source_driver_option */
731 YYSYMBOL_inner_dest = 216, /* inner_dest */
732 YYSYMBOL_dest_driver_option = 217, /* dest_driver_option */
733 YYSYMBOL_threaded_dest_driver_general_option = 218, /* threaded_dest_driver_general_option */
734 YYSYMBOL_threaded_source_driver_option = 219, /* threaded_source_driver_option */
735 YYSYMBOL_220_10 = 220, /* $@10 */
736 YYSYMBOL_221_11 = 221, /* $@11 */
737 YYSYMBOL_threaded_source_driver_option_flags = 222, /* threaded_source_driver_option_flags */
738 YYSYMBOL_source_option = 223, /* source_option */
739 YYSYMBOL_224_12 = 224, /* $@12 */
740 YYSYMBOL_host_resolve_option = 225, /* host_resolve_option */
741 YYSYMBOL_msg_format_option = 226, /* msg_format_option */
742 YYSYMBOL_template_option = 227 /* template_option */
743 };
744 typedef enum yysymbol_kind_t yysymbol_kind_t;
745
746
747
748 /* Unqualified %code blocks. */
749 #line 30 "modules/mqtt/mqtt-grammar.y"
750
751
752 #include "mqtt-destination.h"
753 #include "mqtt-source.h"
754 #include "syslog-names.h"
755
756 #include "cfg-grammar-internal.h"
757 #include "plugin.h"
758 #include "mqtt-options.h"
759
760 MQTTClientOptions *last_options;
761 #line 57 "modules/mqtt/mqtt-grammar.y"
762
763
764 # define YYLLOC_DEFAULT(Current, Rhs, N) \
765 do { \
766 if (N) \
767 { \
768 (Current).level = YYRHSLOC(Rhs, 1).level; \
769 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
770 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
771 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
772 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
773 } \
774 else \
775 { \
776 (Current).level = YYRHSLOC(Rhs, 0).level; \
777 (Current).first_line = (Current).last_line = \
778 YYRHSLOC (Rhs, 0).last_line; \
779 (Current).first_column = (Current).last_column = \
780 YYRHSLOC (Rhs, 0).last_column; \
781 } \
782 } while (0)
783
784 #define CHECK_ERROR_WITHOUT_MESSAGE(val, token) do { \
785 if (!(val)) \
786 { \
787 YYERROR; \
788 } \
789 } while (0)
790
791 #define CHECK_ERROR(val, token, errorfmt, ...) do { \
792 if (!(val)) \
793 { \
794 if (errorfmt) \
795 { \
796 gchar __buf[256]; \
797 g_snprintf(__buf, sizeof(__buf), errorfmt, ## __VA_ARGS__); \
798 yyerror(& (token), lexer, NULL, NULL, __buf); \
799 } \
800 YYERROR; \
801 } \
802 } while (0)
803
804 #define CHECK_ERROR_GERROR(val, token, error, errorfmt, ...) do { \
805 if (!(val)) \
806 { \
807 if (errorfmt) \
808 { \
809 gchar __buf[256]; \
810 g_snprintf(__buf, sizeof(__buf), errorfmt ", error=%s", ## __VA_ARGS__, error->message); \
811 yyerror(& (token), lexer, NULL, NULL, __buf); \
812 } \
813 g_clear_error(&error); \
814 YYERROR; \
815 } \
816 } while (0)
817
818 #define YYMAXDEPTH 20000
819
820
821
822 #line 823 "modules/mqtt/mqtt-grammar.c"
823
824 #ifdef short
825 # undef short
826 #endif
827
828 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
829 <limits.h> and (if available) <stdint.h> are included
830 so that the code can choose integer types of a good width. */
831
832 #ifndef __PTRDIFF_MAX__
833 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
834 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
835 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
836 # define YY_STDINT_H
837 # endif
838 #endif
839
840 /* Narrow types that promote to a signed type and that can represent a
841 signed or unsigned integer of at least N bits. In tables they can
842 save space and decrease cache pressure. Promoting to a signed type
843 helps avoid bugs in integer arithmetic. */
844
845 #ifdef __INT_LEAST8_MAX__
846 typedef __INT_LEAST8_TYPE__ yytype_int8;
847 #elif defined YY_STDINT_H
848 typedef int_least8_t yytype_int8;
849 #else
850 typedef signed char yytype_int8;
851 #endif
852
853 #ifdef __INT_LEAST16_MAX__
854 typedef __INT_LEAST16_TYPE__ yytype_int16;
855 #elif defined YY_STDINT_H
856 typedef int_least16_t yytype_int16;
857 #else
858 typedef short yytype_int16;
859 #endif
860
861 /* Work around bug in HP-UX 11.23, which defines these macros
862 incorrectly for preprocessor constants. This workaround can likely
863 be removed in 2023, as HPE has promised support for HP-UX 11.23
864 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
865 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
866 #ifdef __hpux
867 # undef UINT_LEAST8_MAX
868 # undef UINT_LEAST16_MAX
869 # define UINT_LEAST8_MAX 255
870 # define UINT_LEAST16_MAX 65535
871 #endif
872
873 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
874 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
875 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
876 && UINT_LEAST8_MAX <= INT_MAX)
877 typedef uint_least8_t yytype_uint8;
878 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
879 typedef unsigned char yytype_uint8;
880 #else
881 typedef short yytype_uint8;
882 #endif
883
884 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
885 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
886 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
887 && UINT_LEAST16_MAX <= INT_MAX)
888 typedef uint_least16_t yytype_uint16;
889 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
890 typedef unsigned short yytype_uint16;
891 #else
892 typedef int yytype_uint16;
893 #endif
894
895 #ifndef YYPTRDIFF_T
896 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
897 # define YYPTRDIFF_T __PTRDIFF_TYPE__
898 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
899 # elif defined PTRDIFF_MAX
900 # ifndef ptrdiff_t
901 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
902 # endif
903 # define YYPTRDIFF_T ptrdiff_t
904 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
905 # else
906 # define YYPTRDIFF_T long
907 # define YYPTRDIFF_MAXIMUM LONG_MAX
908 # endif
909 #endif
910
911 #ifndef YYSIZE_T
912 # ifdef __SIZE_TYPE__
913 # define YYSIZE_T __SIZE_TYPE__
914 # elif defined size_t
915 # define YYSIZE_T size_t
916 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
917 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
918 # define YYSIZE_T size_t
919 # else
920 # define YYSIZE_T unsigned
921 # endif
922 #endif
923
924 #define YYSIZE_MAXIMUM \
925 YY_CAST (YYPTRDIFF_T, \
926 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
927 ? YYPTRDIFF_MAXIMUM \
928 : YY_CAST (YYSIZE_T, -1)))
929
930 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
931
932
933 /* Stored state numbers (used for stacks). */
934 typedef yytype_int16 yy_state_t;
935
936 /* State numbers in computations. */
937 typedef int yy_state_fast_t;
938
939 #ifndef YY_
940 # if defined YYENABLE_NLS && YYENABLE_NLS
941 # if ENABLE_NLS
942 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
943 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
944 # endif
945 # endif
946 # ifndef YY_
947 # define YY_(Msgid) Msgid
948 # endif
949 #endif
950
951
952 #ifndef YY_ATTRIBUTE_PURE
953 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
954 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
955 # else
956 # define YY_ATTRIBUTE_PURE
957 # endif
958 #endif
959
960 #ifndef YY_ATTRIBUTE_UNUSED
961 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
962 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
963 # else
964 # define YY_ATTRIBUTE_UNUSED
965 # endif
966 #endif
967
968 /* Suppress unused-variable warnings by "using" E. */
969 #if ! defined lint || defined __GNUC__
970 # define YY_USE(E) ((void) (E))
971 #else
972 # define YY_USE(E) /* empty */
973 #endif
974
975 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
976 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
977 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
978 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
979 _Pragma ("GCC diagnostic push") \
980 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
981 # else
982 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
983 _Pragma ("GCC diagnostic push") \
984 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
985 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
986 # endif
987 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
988 _Pragma ("GCC diagnostic pop")
989 #else
990 # define YY_INITIAL_VALUE(Value) Value
991 #endif
992 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
993 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
994 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
995 #endif
996 #ifndef YY_INITIAL_VALUE
997 # define YY_INITIAL_VALUE(Value) /* Nothing. */
998 #endif
999
1000 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1001 # define YY_IGNORE_USELESS_CAST_BEGIN \
1002 _Pragma ("GCC diagnostic push") \
1003 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1004 # define YY_IGNORE_USELESS_CAST_END \
1005 _Pragma ("GCC diagnostic pop")
1006 #endif
1007 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1008 # define YY_IGNORE_USELESS_CAST_BEGIN
1009 # define YY_IGNORE_USELESS_CAST_END
1010 #endif
1011
1012
1013 #define YY_ASSERT(E) ((void) (0 && (E)))
1014
1015 #if 1
1016
1017 /* The parser invokes alloca or malloc; define the necessary symbols. */
1018
1019 # ifdef YYSTACK_USE_ALLOCA
1020 # if YYSTACK_USE_ALLOCA
1021 # ifdef __GNUC__
1022 # define YYSTACK_ALLOC __builtin_alloca
1023 # elif defined __BUILTIN_VA_ARG_INCR
1024 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1025 # elif defined _AIX
1026 # define YYSTACK_ALLOC __alloca
1027 # elif defined _MSC_VER
1028 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1029 # define alloca _alloca
1030 # else
1031 # define YYSTACK_ALLOC alloca
1032 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1033 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1034 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
1035 # ifndef EXIT_SUCCESS
1036 # define EXIT_SUCCESS 0
1037 # endif
1038 # endif
1039 # endif
1040 # endif
1041 # endif
1042
1043 # ifdef YYSTACK_ALLOC
1044 /* Pacify GCC's 'empty if-body' warning. */
1045 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1046 # ifndef YYSTACK_ALLOC_MAXIMUM
1047 /* The OS might guarantee only one guard page at the bottom of the stack,
1048 and a page size can be as small as 4096 bytes. So we cannot safely
1049 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
1050 to allow for a few compiler-allocated temporary stack slots. */
1051 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1052 # endif
1053 # else
1054 # define YYSTACK_ALLOC YYMALLOC
1055 # define YYSTACK_FREE YYFREE
1056 # ifndef YYSTACK_ALLOC_MAXIMUM
1057 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1058 # endif
1059 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1060 && ! ((defined YYMALLOC || defined malloc) \
1061 && (defined YYFREE || defined free)))
1062 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1063 # ifndef EXIT_SUCCESS
1064 # define EXIT_SUCCESS 0
1065 # endif
1066 # endif
1067 # ifndef YYMALLOC
1068 # define YYMALLOC malloc
1069 # if ! defined malloc && ! defined EXIT_SUCCESS
1070 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1071 # endif
1072 # endif
1073 # ifndef YYFREE
1074 # define YYFREE free
1075 # if ! defined free && ! defined EXIT_SUCCESS
1076 void free (void *); /* INFRINGES ON USER NAME SPACE */
1077 # endif
1078 # endif
1079 # endif
1080 #endif /* 1 */
1081
1082 #if (! defined yyoverflow \
1083 && (! defined __cplusplus \
1084 || (defined MQTT_LTYPE_IS_TRIVIAL && MQTT_LTYPE_IS_TRIVIAL \
1085 && defined MQTT_STYPE_IS_TRIVIAL && MQTT_STYPE_IS_TRIVIAL)))
1086
1087 /* A type that is properly aligned for any stack member. */
1088 union yyalloc
1089 {
1090 yy_state_t yyss_alloc;
1091 YYSTYPE yyvs_alloc;
1092 YYLTYPE yyls_alloc;
1093 };
1094
1095 /* The size of the maximum gap between one aligned stack and the next. */
1096 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1097
1098 /* The size of an array large to enough to hold all stacks, each with
1099 N elements. */
1100 # define YYSTACK_BYTES(N) \
1101 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
1102 + YYSIZEOF (YYLTYPE)) \
1103 + 2 * YYSTACK_GAP_MAXIMUM)
1104
1105 # define YYCOPY_NEEDED 1
1106
1107 /* Relocate STACK from its old location to the new one. The
1108 local variables YYSIZE and YYSTACKSIZE give the old and new number of
1109 elements in the stack, and YYPTR gives the new location of the
1110 stack. Advance YYPTR to a properly aligned location for the next
1111 stack. */
1112 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1113 do \
1114 { \
1115 YYPTRDIFF_T yynewbytes; \
1116 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1117 Stack = &yyptr->Stack_alloc; \
1118 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1119 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1120 } \
1121 while (0)
1122
1123 #endif
1124
1125 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1126 /* Copy COUNT objects from SRC to DST. The source and destination do
1127 not overlap. */
1128 # ifndef YYCOPY
1129 # if defined __GNUC__ && 1 < __GNUC__
1130 # define YYCOPY(Dst, Src, Count) \
1131 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1132 # else
1133 # define YYCOPY(Dst, Src, Count) \
1134 do \
1135 { \
1136 YYPTRDIFF_T yyi; \
1137 for (yyi = 0; yyi < (Count); yyi++) \
1138 (Dst)[yyi] = (Src)[yyi]; \
1139 } \
1140 while (0)
1141 # endif
1142 # endif
1143 #endif /* !YYCOPY_NEEDED */
1144
1145 /* YYFINAL -- State number of the termination state. */
1146 #define YYFINAL 6
1147 /* YYLAST -- Last index in YYTABLE. */
1148 #define YYLAST 256
1149
1150 /* YYNTOKENS -- Number of terminals. */
1151 #define YYNTOKENS 184
1152 /* YYNNTS -- Number of nonterminals. */
1153 #define YYNNTS 44
1154 /* YYNRULES -- Number of rules. */
1155 #define YYNRULES 108
1156 /* YYNSTATES -- Number of states. */
1157 #define YYNSTATES 274
1158
1159 /* YYMAXUTOK -- Last valid token kind. */
1160 #define YYMAXUTOK 10535
1161
1162
1163 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1164 as returned by yylex, with out-of-bounds checking. */
1165 #define YYTRANSLATE(YYX) \
1166 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
1167 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
1168 : YYSYMBOL_YYUNDEF)
1169
1170 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1171 as returned by yylex. */
1172 static const yytype_uint8 yytranslate[] =
1173 {
1174 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1175 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1176 22, 23, 2, 2, 2, 2, 2, 2, 2, 2,
1177 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1178 178, 179, 2, 2, 2, 2, 2, 2, 2, 2,
1179 2, 2, 2, 2, 2, 2, 2, 2, 183, 182,
1180 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1181 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1182 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1183 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1184 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1185 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1186 2, 2, 2, 180, 2, 181, 2, 2, 2, 2,
1187 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1188 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1189 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1190 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1191 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1192 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1193 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1194 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1195 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1196 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1197 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1198 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1199 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
1200 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1201 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1202 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1203 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1204 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1205 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1206 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1207 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1208 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1209 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1210 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1211 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1212 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1213 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1214 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1215 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1217 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1218 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1219 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1220 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1221 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1222 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1223 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1224 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1225 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1226 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1227 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1228 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1229 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1230 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1231 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1232 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1233 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1234 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1235 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1236 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1237 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1238 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1239 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1240 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1241 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1242 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1243 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1244 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1245 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1246 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1247 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1248 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1249 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1250 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1251 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1252 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1253 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1254 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1255 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1256 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1257 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1258 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1259 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1260 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1261 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1262 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1263 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1264 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1265 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1266 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1267 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1268 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1269 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1270 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1271 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1272 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1273 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1274 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1275 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1276 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1277 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1278 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1279 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1280 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1281 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1282 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1283 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1284 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1285 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1286 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1287 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1288 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1289 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1290 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1291 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1292 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1293 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1294 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1295 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1296 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1297 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1298 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1299 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1300 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1301 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1302 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1303 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1304 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1305 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1306 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1307 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1308 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1309 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1310 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1311 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1312 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1313 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1314 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1315 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1316 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1317 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1318 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1319 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1320 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1321 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1322 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1323 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1324 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1325 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1326 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1327 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1328 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1329 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1330 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1331 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1332 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1333 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1334 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1335 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1336 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1337 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1338 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1339 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1340 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1341 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1342 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1343 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1344 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1345 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1346 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1347 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1348 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1349 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1350 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1351 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1352 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1353 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1354 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1355 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1356 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1357 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1358 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1359 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1360 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1361 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1362 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1363 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1364 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1365 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1366 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1367 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1368 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1369 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1370 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1371 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1372 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1373 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1374 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1375 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1376 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1377 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1378 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1379 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1380 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1381 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1382 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1383 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1384 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1385 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1386 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1387 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1388 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1389 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1390 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1391 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1392 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1393 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1394 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1395 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1396 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1397 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1398 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1399 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1400 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1401 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1402 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1403 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1404 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1405 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1406 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1407 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1408 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1409 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1410 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1411 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1412 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1413 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1415 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1416 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1417 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1418 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1421 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1423 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1424 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1425 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1426 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1427 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1428 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1431 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1432 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1433 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1437 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1439 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1442 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1443 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1444 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1445 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1446 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1447 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1448 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1449 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1450 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1451 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1452 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1453 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1454 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1455 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1456 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1457 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1458 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1459 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1460 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1461 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1462 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1463 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1464 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1465 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1466 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1467 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1468 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1469 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1470 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1471 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1472 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1473 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1474 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1475 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1476 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1477 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1478 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1479 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1480 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1481 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1482 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1483 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1484 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1485 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1486 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1487 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1488 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1489 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1490 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1491 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1492 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1493 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1494 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1495 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1496 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1497 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1498 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1499 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1500 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1501 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1502 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1503 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1504 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1505 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1506 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1507 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1508 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1516 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1517 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1518 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1519 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1520 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1521 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1522 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1523 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1524 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1525 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1526 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1527 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1528 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1529 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1530 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1531 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1532 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1533 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1534 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1535 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1536 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1537 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1538 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1539 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1541 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1542 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1543 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1546 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1547 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1550 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1551 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1554 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1560 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1569 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1572 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1573 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1574 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1575 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1576 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1577 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1578 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1579 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1580 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1581 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1582 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1583 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1584 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1585 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1586 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1587 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1588 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1589 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1590 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1591 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1592 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1593 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1594 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1595 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1596 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1597 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1598 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1599 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1600 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1601 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1602 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1603 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1604 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1605 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1606 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1607 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1608 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1609 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1610 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1611 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1612 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1613 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1614 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1615 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1616 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1617 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1618 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1619 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1620 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1621 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1622 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1623 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1624 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1625 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1626 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1627 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1628 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1629 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1630 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1631 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1632 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1633 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1634 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1635 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1636 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1637 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1638 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1639 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1640 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1641 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1642 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1643 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1644 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1645 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1646 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1647 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1648 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1649 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1650 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1651 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1652 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1653 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1654 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1655 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1656 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1657 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1658 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1659 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1660 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1661 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1662 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1663 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1664 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1665 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1666 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1667 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1668 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1669 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1670 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1671 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1672 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1673 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1674 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1675 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1676 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1677 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1678 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1679 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1680 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1681 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1682 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1683 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1684 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1685 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1686 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1687 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1688 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1689 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1690 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1691 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1692 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1693 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1694 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1695 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1696 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1697 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1698 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1699 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1700 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1701 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1702 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1703 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1704 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1705 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1706 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1707 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1708 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1709 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1710 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1711 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1712 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1713 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1714 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1715 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1716 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1717 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1718 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1719 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1720 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1721 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1722 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1723 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1724 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1725 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1726 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1727 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1728 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1729 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1730 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1731 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1732 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1733 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1734 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1735 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1736 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1737 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1738 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1739 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1740 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1741 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1742 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1743 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1744 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1745 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1746 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1747 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1748 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1749 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1750 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1751 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1752 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1753 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1754 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1755 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1756 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1757 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1758 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1759 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1760 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1761 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1762 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1763 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1764 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1765 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1766 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1767 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1768 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1769 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1770 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1771 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1772 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1773 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1774 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1775 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1776 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1777 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1778 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1779 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1780 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1781 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1782 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1786 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1787 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1788 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1790 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1791 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1792 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1794 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1795 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1796 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1797 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1798 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1800 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1801 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1802 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1803 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1804 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1805 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1806 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1807 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1808 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1809 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1811 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1812 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1813 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1814 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1815 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1816 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1817 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1818 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1819 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1820 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1821 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1822 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1823 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1824 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1825 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1826 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1827 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1828 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1829 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1830 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1831 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1832 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1833 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1834 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1835 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1836 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1837 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1838 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1839 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1840 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1841 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1842 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1843 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1844 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1845 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1846 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1847 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1848 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1849 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1850 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1851 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1852 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1853 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1854 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1855 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1856 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1857 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1858 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1859 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1860 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1861 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1862 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1863 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1864 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1865 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1866 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1867 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1868 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1869 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1870 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1871 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1872 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1873 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1874 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1875 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1876 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1877 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1878 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1879 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1880 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1881 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1882 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1883 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1884 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1885 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1886 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1887 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1888 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1889 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1890 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1891 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1892 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1893 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1894 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1895 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1896 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1897 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1898 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1899 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1900 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1901 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1902 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1903 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1904 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1905 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1906 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1907 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1908 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1909 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1910 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1911 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1912 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1914 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1915 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1916 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1917 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1918 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1919 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1920 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1921 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1922 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1923 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1924 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1925 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1926 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1927 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1928 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1929 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1930 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1931 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1932 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1933 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1934 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1935 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1936 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1937 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1938 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1939 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1940 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1941 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1942 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1943 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1944 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1945 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1946 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1947 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1948 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1949 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1950 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1951 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1952 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1953 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1954 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1955 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1956 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1957 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1958 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1959 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1960 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1961 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1962 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1963 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1964 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1965 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1966 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1967 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1968 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1969 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1970 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1971 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1973 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1974 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1975 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1976 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1977 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1978 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1979 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1980 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1981 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1982 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1983 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1984 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1985 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1986 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1987 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1988 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1989 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1990 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1991 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1992 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1993 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1994 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1995 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1996 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1997 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1998 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1999 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2000 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2001 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2002 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2003 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2004 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2005 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2006 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2007 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2008 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2009 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2010 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2011 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2012 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2013 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2014 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2015 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2016 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2017 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2018 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2019 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2020 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2021 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2022 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2023 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2024 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2025 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2026 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2027 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2028 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2029 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2030 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2031 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2032 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2033 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2034 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2035 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2036 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2037 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2038 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2039 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2040 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2041 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2042 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2043 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2044 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2045 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2046 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2047 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2048 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2049 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2050 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2051 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2052 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2053 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2054 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2055 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2056 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2057 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2058 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2059 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2060 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2061 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2062 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2063 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2064 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2065 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2066 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2067 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2068 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2069 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2070 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2071 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2072 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2073 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2074 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2075 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2076 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2077 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2078 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2079 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2080 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2081 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2082 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2083 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2084 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2085 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2086 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2087 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2088 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2089 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2090 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2091 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2092 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2093 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2094 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2095 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2096 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2097 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2098 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2099 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2100 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2101 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2102 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2103 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2104 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2105 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2106 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2107 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2109 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2110 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2111 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2112 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2113 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2114 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2115 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2116 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2117 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2118 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2119 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2120 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2121 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2122 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2123 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2124 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2125 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2126 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2127 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2128 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2129 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2130 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2131 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2132 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2133 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2134 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2135 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2136 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2137 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2138 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2139 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2140 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2141 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2142 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2143 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2144 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2145 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2146 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2147 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2148 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2149 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2150 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2151 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2152 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2153 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2154 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2155 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2156 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2157 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2158 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2159 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2160 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2161 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2162 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2163 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2164 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2165 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2166 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2167 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2168 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2169 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2170 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2171 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2172 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2173 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2174 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
2175 34, 35, 36, 2, 2, 2, 2, 2, 2, 2,
2176 37, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2177 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2178 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2179 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2180 38, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2181 2, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2182 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2183 58, 59, 60, 61, 62, 2, 2, 2, 2, 2,
2184 63, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2185 64, 65, 66, 2, 2, 2, 2, 2, 2, 2,
2186 67, 68, 2, 2, 2, 2, 2, 2, 2, 2,
2187 69, 70, 71, 2, 2, 2, 2, 2, 2, 2,
2188 72, 73, 74, 2, 2, 2, 2, 2, 2, 2,
2189 75, 76, 77, 2, 2, 2, 2, 2, 2, 2,
2190 78, 2, 79, 80, 81, 82, 83, 2, 2, 2,
2191 84, 85, 2, 2, 2, 2, 2, 2, 2, 2,
2192 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2193 90, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2194 91, 92, 93, 94, 95, 96, 97, 2, 2, 2,
2195 98, 99, 100, 2, 2, 2, 2, 2, 2, 2,
2196 101, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2197 102, 86, 2, 2, 2, 2, 2, 2, 2, 2,
2198 103, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2199 104, 105, 106, 2, 2, 2, 2, 2, 2, 2,
2200 107, 108, 109, 2, 2, 2, 2, 2, 2, 2,
2201 110, 111, 112, 2, 2, 2, 2, 2, 2, 2,
2202 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2203 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2204 113, 114, 87, 2, 88, 89, 2, 2, 2, 2,
2205 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2206 2, 2, 2, 115, 2, 2, 2, 2, 2, 2,
2207 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2208 116, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2209 117, 118, 119, 120, 121, 122, 123, 124, 2, 2,
2210 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2211 125, 126, 127, 2, 2, 2, 2, 2, 2, 2,
2212 128, 129, 2, 2, 2, 2, 2, 2, 2, 2,
2213 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2214 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2215 130, 131, 2, 2, 2, 2, 2, 2, 2, 2,
2216 132, 133, 134, 135, 136, 137, 2, 2, 2, 2,
2217 138, 139, 140, 141, 142, 143, 2, 2, 2, 2,
2218 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2219 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2220 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2221 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2222 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2223 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2224 144, 2, 145, 146, 147, 148, 149, 150, 151, 152,
2225 153, 154, 155, 156, 2, 157, 158, 159, 160, 161,
2226 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
2227 172, 173, 174, 175, 176, 177
2228 };
2229
2230 #if MQTT_DEBUG
2231 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
2232 static const yytype_int16 yyrline[] =
2233 {
2234 0, 422, 422, 421, 428, 427, 436, 437, 441, 442,
2235 443, 444, 445, 446, 446, 450, 451, 452, 456, 457,
2236 458, 462, 463, 468, 473, 474, 475, 476, 477, 481,
2237 482, 486, 487, 488, 489, 490, 491, 494, 495, 731,
2238 738, 751, 751, 762, 763, 767, 768, 769, 773, 774,
2239 778, 785, 792, 799, 834, 844, 848, 860, 864, 865,
2240 874, 885, 893, 909, 913, 939, 940, 944, 972, 973,
2241 974, 975, 989, 993, 994, 999, 1000, 1001, 1001, 1002,
2242 1002, 1003, 1012, 1017, 1023, 1024, 1025, 1026, 1027, 1028,
2243 1029, 1030, 1031, 1032, 1033, 1033, 1069, 1070, 1071, 1072,
2244 1076, 1077, 1083, 1146, 1147, 1148, 1149, 1150, 1151
2245 };
2246 #endif
2247
2248 /** Accessing symbol of state STATE. */
2249 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2250
2251 #if 1
2252 /* The user-facing name of the symbol whose (internal) number is
2253 YYSYMBOL. No bounds checking. */
2254 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2255
2256 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2257 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2258 static const char *const yytname[] =
2259 {
2260 "\"end of file\"", "error", "\"invalid token\"", "LL_CONTEXT_ROOT",
2261 "LL_CONTEXT_DESTINATION", "LL_CONTEXT_SOURCE", "LL_CONTEXT_PARSER",
2262 "LL_CONTEXT_REWRITE", "LL_CONTEXT_FILTER", "LL_CONTEXT_LOG",
2263 "LL_CONTEXT_BLOCK_DEF", "LL_CONTEXT_BLOCK_REF",
2264 "LL_CONTEXT_BLOCK_CONTENT", "LL_CONTEXT_BLOCK_ARG", "LL_CONTEXT_PRAGMA",
2265 "LL_CONTEXT_FORMAT", "LL_CONTEXT_TEMPLATE_FUNC", "LL_CONTEXT_INNER_DEST",
2266 "LL_CONTEXT_INNER_SRC", "LL_CONTEXT_CLIENT_PROTO",
2267 "LL_CONTEXT_SERVER_PROTO", "LL_CONTEXT_OPTIONS", "LL_CONTEXT_CONFIG",
2268 "LL_CONTEXT_MAX", "KW_SOURCE", "KW_FILTER", "KW_PARSER",
2269 "KW_DESTINATION", "KW_LOG", "KW_OPTIONS", "KW_INCLUDE", "KW_BLOCK",
2270 "KW_JUNCTION", "KW_CHANNEL", "KW_IF", "KW_ELSE", "KW_ELIF",
2271 "KW_INTERNAL", "KW_SYSLOG", "KW_MARK_FREQ", "KW_STATS_FREQ",
2272 "KW_STATS_LEVEL", "KW_STATS_LIFETIME", "KW_FLUSH_LINES", "KW_SUPPRESS",
2273 "KW_FLUSH_TIMEOUT", "KW_LOG_MSG_SIZE", "KW_FILE_TEMPLATE",
2274 "KW_PROTO_TEMPLATE", "KW_MARK_MODE", "KW_ENCODING", "KW_TYPE",
2275 "KW_STATS_MAX_DYNAMIC", "KW_MIN_IW_SIZE_PER_READER", "KW_WORKERS",
2276 "KW_BATCH_LINES", "KW_BATCH_TIMEOUT", "KW_TRIM_LARGE_MESSAGES",
2277 "KW_CHAIN_HOSTNAMES", "KW_NORMALIZE_HOSTNAMES", "KW_KEEP_HOSTNAME",
2278 "KW_CHECK_HOSTNAME", "KW_BAD_HOSTNAME", "KW_KEEP_TIMESTAMP",
2279 "KW_USE_DNS", "KW_USE_FQDN", "KW_CUSTOM_DOMAIN", "KW_DNS_CACHE",
2280 "KW_DNS_CACHE_SIZE", "KW_DNS_CACHE_EXPIRE", "KW_DNS_CACHE_EXPIRE_FAILED",
2281 "KW_DNS_CACHE_HOSTS", "KW_PERSIST_ONLY", "KW_USE_RCPTID",
2282 "KW_USE_UNIQID", "KW_TZ_CONVERT", "KW_TS_FORMAT", "KW_FRAC_DIGITS",
2283 "KW_LOG_FIFO_SIZE", "KW_LOG_FETCH_LIMIT", "KW_LOG_IW_SIZE",
2284 "KW_LOG_PREFIX", "KW_PROGRAM_OVERRIDE", "KW_HOST_OVERRIDE",
2285 "KW_THROTTLE", "KW_THREADED", "KW_PASS_UNIX_CREDENTIALS",
2286 "KW_PERSIST_NAME", "KW_READ_OLD_RECORDS", "KW_USE_SYSLOGNG_PID",
2287 "KW_FLAGS", "KW_PAD_SIZE", "KW_TIME_ZONE", "KW_RECV_TIME_ZONE",
2288 "KW_SEND_TIME_ZONE", "KW_LOCAL_TIME_ZONE", "KW_FORMAT",
2289 "KW_TRUNCATE_SIZE", "KW_TIME_REOPEN", "KW_TIME_REAP", "KW_TIME_SLEEP",
2290 "KW_TMPL_ESCAPE", "KW_OPTIONAL", "KW_CREATE_DIRS", "KW_OWNER",
2291 "KW_GROUP", "KW_PERM", "KW_DIR_OWNER", "KW_DIR_GROUP", "KW_DIR_PERM",
2292 "KW_TEMPLATE", "KW_TEMPLATE_ESCAPE", "KW_TEMPLATE_FUNCTION",
2293 "KW_DEFAULT_FACILITY", "KW_DEFAULT_SEVERITY", "KW_PORT",
2294 "KW_USE_TIME_RECVD", "KW_FACILITY", "KW_SEVERITY", "KW_HOST", "KW_MATCH",
2295 "KW_MESSAGE", "KW_NETMASK", "KW_TAGS", "KW_NETMASK6", "KW_REWRITE",
2296 "KW_CONDITION", "KW_VALUE", "KW_YES", "KW_NO", "KW_IFDEF", "KW_ENDIF",
2297 "LL_DOTDOT", "LL_DOTDOTDOT", "LL_PRAGMA", "LL_EOL", "LL_ERROR",
2298 "LL_ARROW", "LL_IDENTIFIER", "LL_NUMBER", "LL_FLOAT", "LL_STRING",
2299 "LL_TOKEN", "LL_BLOCK", "KW_VALUE_PAIRS", "KW_EXCLUDE", "KW_PAIR",
2300 "KW_KEY", "KW_SCOPE", "KW_SHIFT", "KW_SHIFT_LEVELS", "KW_REKEY",
2301 "KW_ADD_PREFIX", "KW_REPLACE_PREFIX", "KW_ON_ERROR", "KW_RETRIES",
2302 "KW_FETCH_NO_DATA_DELAY", "KW_MQTT", "KW_TOPIC", "KW_FALLBACK_TOPIC",
2303 "KW_KEEPALIVE", "KW_ADDRESS", "KW_QOS", "KW_CLIENT_ID",
2304 "KW_CLEANSESSION", "KW_MESSAGE_TEMPLATE", "KW_USERNAME", "KW_PASSWORD",
2305 "KW_HTTP_PROXY", "KW_TLS", "KW_CA_DIR", "KW_CA_FILE", "KW_CERT_FILE",
2306 "KW_KEY_FILE", "KW_CIPHER_SUITE", "KW_USE_SYSTEM_CERT_STORE",
2307 "KW_SSL_VERSION", "KW_PEER_VERIFY", "'('", "')'", "'{'", "'}'", "';'",
2308 "':'", "$accept", "start", "$@1", "$@2", "mqtt_destination_options",
2309 "mqtt_destination_option", "$@3", "mqtt_source_options",
2310 "mqtt_source_option", "mqtt_option", "mqtt_tls_options",
2311 "mqtt_tls_option", "template_content_inner", "template_content", "$@9",
2312 "string", "yesno", "dnsmode", "nonnegative_integer64",
2313 "nonnegative_integer", "positive_integer64", "positive_integer", "path",
2314 "path_check", "path_secret", "string_list", "string_list_build",
2315 "severity_string", "facility_string", "driver_option", "inner_source",
2316 "source_driver_option", "inner_dest", "dest_driver_option",
2317 "threaded_dest_driver_general_option", "threaded_source_driver_option",
2318 "$@10", "$@11", "threaded_source_driver_option_flags", "source_option",
2319 "$@12", "host_resolve_option", "msg_format_option", "template_option", YY_NULLPTR
2320 };
2321
2322 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)2323 yysymbol_name (yysymbol_kind_t yysymbol)
2324 {
2325 return yytname[yysymbol];
2326 }
2327 #endif
2328
2329 #define YYPACT_NINF (-154)
2330
2331 #define yypact_value_is_default(Yyn) \
2332 ((Yyn) == YYPACT_NINF)
2333
2334 #define YYTABLE_NINF (-78)
2335
2336 #define yytable_value_is_error(Yyn) \
2337 0
2338
2339 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2340 STATE-NUM. */
2341 static const yytype_int16 yypact[] =
2342 {
2343 9, -153, -136, 30, -154, -154, -154, -147, -129, -50,
2344 -24, -128, -127, -126, -125, -124, -154, -123, -121, -117,
2345 -116, -114, -111, -108, -107, -104, -103, -102, -101, -50,
2346 -59, -154, -154, -154, -154, -154, -94, -93, -154, -92,
2347 -91, -85, -24, -154, -154, -154, -154, -154, -72, 99,
2348 -74, -43, -119, -74, -154, -74, -154, -119, -74, -119,
2349 -43, -119, -119, -119, -119, 1, -154, -154, -81, -76,
2350 -71, -63, -58, -56, -154, -119, -119, -119, -113, -154,
2351 -154, -54, -53, -48, -154, -46, -29, -28, -27, -22,
2352 -18, -17, -14, -13, -12, -154, -20, -154, -154, -73,
2353 -154, -154, -51, -154, -154, -44, -38, -21, -95, -11,
2354 -10, 4, 6, 10, 11, 12, 13, 14, 15, 17,
2355 18, 19, 20, 21, 22, 23, 24, 25, 1, -119,
2356 -43, -119, -119, -119, -119, -119, 26, 27, 28, -154,
2357 -154, -154, 29, -119, -37, -119, -113, -113, -113, -74,
2358 -119, -119, -119, -113, -113, -119, 31, 32, 33, 34,
2359 -154, -154, -154, -154, -154, -154, 35, -154, -154, -154,
2360 -154, -154, -154, -154, -154, -154, -154, -154, -154, -119,
2361 -119, -119, -119, -119, -113, -119, -113, -154, -154, 36,
2362 37, 38, 44, 45, 46, -154, -154, -154, -154, -154,
2363 47, -154, -154, 48, -154, 49, 50, 51, 52, 53,
2364 54, 55, 56, 57, 58, -119, 59, -154, -113, -70,
2365 -113, -113, -119, 60, -154, -154, 61, 62, -154, 63,
2366 64, 65, 66, 67, -154, -154, -154, -154, -154, -154,
2367 -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
2368 -154, -154, -154, -154, 68, -154, -154, 69, 70, 71,
2369 72, -154, -154, -154, -154, -154, -154, -154, -154, -154,
2370 -154, -154, -154, -154
2371 };
2372
2373 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
2374 Performed when YYTABLE does not specify something else to do. Zero
2375 means the default is an error. */
2376 static const yytype_int8 yydefact[] =
2377 {
2378 0, 0, 0, 0, 2, 4, 1, 0, 0, 13,
2379 79, 0, 0, 0, 0, 0, 67, 0, 0, 0,
2380 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
2381 0, 9, 71, 70, 74, 8, 0, 0, 64, 0,
2382 0, 0, 79, 19, 66, 65, 81, 18, 0, 94,
2383 0, 0, 0, 0, 41, 0, 41, 0, 0, 0,
2384 0, 0, 0, 0, 0, 30, 3, 6, 0, 0,
2385 0, 0, 0, 0, 14, 83, 0, 0, 0, 5,
2386 15, 0, 0, 0, 78, 0, 0, 0, 0, 0,
2387 0, 0, 0, 0, 0, 80, 0, 52, 53, 0,
2388 50, 51, 0, 43, 44, 0, 0, 0, 0, 0,
2389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2390 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,
2391 0, 0, 0, 0, 0, 83, 0, 0, 0, 45,
2392 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2393 0, 0, 0, 0, 0, 59, 0, 0, 0, 0,
2394 95, 68, 69, 63, 73, 12, 43, 42, 39, 72,
2395 10, 11, 21, 22, 23, 24, 25, 26, 27, 0,
2396 0, 0, 0, 0, 0, 0, 0, 28, 29, 0,
2397 0, 0, 0, 0, 0, 82, 76, 75, 20, 16,
2398 0, 62, 61, 0, 60, 0, 0, 0, 0, 0,
2399 0, 0, 0, 0, 0, 59, 0, 57, 0, 0,
2400 0, 0, 0, 0, 54, 55, 0, 0, 56, 0,
2401 0, 0, 0, 0, 103, 104, 105, 106, 107, 108,
2402 100, 102, 101, 85, 86, 90, 84, 89, 87, 88,
2403 91, 92, 58, 93, 0, 49, 48, 0, 0, 0,
2404 0, 31, 32, 33, 34, 35, 38, 36, 37, 99,
2405 97, 96, 98, 40
2406 };
2407
2408 /* YYPGOTO[NTERM-NUM]. */
2409 static const yytype_int16 yypgoto[] =
2410 {
2411 -154, -154, -154, -154, 92, -154, -154, 84, -154, -4,
2412 39, -154, -154, 96, -154, -52, 0, -154, -154, -57,
2413 -154, -26, 73, 75, -154, -154, -1, -154, -154, -2,
2414 -154, -154, -154, -154, -154, -154, -154, -154, 117, -154,
2415 -154, -154, -154, -154
2416 };
2417
2418 /* YYDEFGOTO[NTERM-NUM]. */
2419 static const yytype_int16 yydefgoto[] =
2420 {
2421 0, 3, 7, 8, 28, 29, 30, 41, 42, 31,
2422 127, 128, 167, 107, 108, 224, 142, 257, 101, 102,
2423 98, 99, 225, 226, 229, 216, 217, 205, 203, 32,
2424 45, 46, 33, 34, 35, 47, 48, 49, 136, 95,
2425 96, 160, 84, 74
2426 };
2427
2428 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
2429 positive, shift that token. If negative, reduce the rule whose
2430 number is the opposite. If YYTABLE_NINF, syntax error. */
2431 static const yytype_int16 yytable[] =
2432 {
2433 105, 201, 255, 114, 4, 111, 43, 113, 44, 115,
2434 116, 117, 118, 1, 2, 139, 140, 68, 69, 103,
2435 81, 5, 104, 135, 137, 138, 141, 106, 11, 109,
2436 6, 9, 112, 70, 12, 71, 72, 13, 43, 156,
2437 44, 82, 83, 166, 157, 158, 104, 159, 14, 10,
2438 50, 51, 52, 53, 54, 55, 168, 56, 139, 140,
2439 15, 57, 58, 13, 59, 97, 36, 60, -77, 141,
2440 61, 62, 37, 190, 63, 64, 65, 189, 66, 191,
2441 192, 193, 194, 135, 75, 76, 77, 78, 16, -77,
2442 -77, 200, 202, 204, 79, 73, 100, 129, 210, 211,
2443 212, 103, 130, 215, 104, 17, 161, 131, 18, 19,
2444 20, 21, 22, 23, 38, 132, 24, 25, 26, 27,
2445 133, 67, 134, 209, 143, 144, 80, 223, 162, -7,
2446 145, 230, 146, 232, 39, 163, 20, 21, 22, 23,
2447 40, 164, 24, 25, 26, 27, 206, 207, 208, 147,
2448 148, 149, 110, 213, 214, -17, 150, 85, 165, 86,
2449 151, 152, 87, 215, 153, 154, 155, 188, 169, 170,
2450 260, 119, 120, 121, 122, 123, 124, 125, 126, 88,
2451 89, 90, 91, 171, 231, 172, 233, 92, 93, 173,
2452 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
2453 184, 185, 186, 0, 187, 196, 197, 198, 199, 218,
2454 219, 220, 221, 222, 252, 234, 235, 236, 254, 256,
2455 258, 259, 94, 237, 238, 239, 240, 241, 242, 243,
2456 244, 245, 246, 247, 248, 249, 250, 251, 253, 261,
2457 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
2458 272, 273, 195, 0, 0, 228, 227
2459 };
2460
2461 static const yytype_int16 yycheck[] =
2462 {
2463 52, 38, 72, 60, 157, 57, 10, 59, 10, 61,
2464 62, 63, 64, 4, 5, 128, 129, 76, 77, 138,
2465 92, 157, 141, 75, 76, 77, 139, 53, 78, 55,
2466 0, 178, 58, 92, 84, 94, 95, 87, 42, 59,
2467 42, 113, 114, 138, 64, 65, 141, 67, 98, 178,
2468 178, 178, 178, 178, 178, 178, 108, 178, 128, 129,
2469 110, 178, 178, 87, 178, 139, 90, 178, 92, 139,
2470 178, 178, 96, 130, 178, 178, 178, 129, 179, 131,
2471 132, 133, 134, 135, 178, 178, 178, 178, 138, 113,
2472 114, 143, 144, 145, 179, 154, 139, 178, 150, 151,
2473 152, 138, 178, 155, 141, 155, 179, 178, 158, 159,
2474 160, 161, 162, 163, 138, 178, 166, 167, 168, 169,
2475 178, 29, 178, 149, 178, 178, 42, 179, 179, 179,
2476 178, 183, 178, 185, 158, 179, 160, 161, 162, 163,
2477 164, 179, 166, 167, 168, 169, 146, 147, 148, 178,
2478 178, 178, 56, 153, 154, 179, 178, 58, 179, 60,
2479 178, 178, 63, 215, 178, 178, 178, 128, 179, 179,
2480 222, 170, 171, 172, 173, 174, 175, 176, 177, 80,
2481 81, 82, 83, 179, 184, 179, 186, 88, 89, 179,
2482 179, 179, 179, 179, 179, 178, 178, 178, 178, 178,
2483 178, 178, 178, -1, 179, 179, 179, 179, 179, 178,
2484 178, 178, 178, 178, 215, 179, 179, 179, 218, 219,
2485 220, 221, 123, 179, 179, 179, 179, 179, 179, 179,
2486 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2487 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2488 179, 179, 135, -1, -1, 182, 181
2489 };
2490
2491 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
2492 state STATE-NUM. */
2493 static const yytype_uint8 yystos[] =
2494 {
2495 0, 4, 5, 185, 157, 157, 0, 186, 187, 178,
2496 178, 78, 84, 87, 98, 110, 138, 155, 158, 159,
2497 160, 161, 162, 163, 166, 167, 168, 169, 188, 189,
2498 190, 193, 213, 216, 217, 218, 90, 96, 138, 158,
2499 164, 191, 192, 193, 213, 214, 215, 219, 220, 221,
2500 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
2501 178, 178, 178, 178, 178, 178, 179, 188, 76, 77,
2502 92, 94, 95, 154, 227, 178, 178, 178, 178, 179,
2503 191, 92, 113, 114, 226, 58, 60, 63, 80, 81,
2504 82, 83, 88, 89, 123, 223, 224, 139, 204, 205,
2505 139, 202, 203, 138, 141, 199, 205, 197, 198, 205,
2506 197, 199, 205, 199, 203, 199, 199, 199, 199, 170,
2507 171, 172, 173, 174, 175, 176, 177, 194, 195, 178,
2508 178, 178, 178, 178, 178, 199, 222, 199, 199, 128,
2509 129, 139, 200, 178, 178, 178, 178, 178, 178, 178,
2510 178, 178, 178, 178, 178, 178, 59, 64, 65, 67,
2511 225, 179, 179, 179, 179, 179, 138, 196, 199, 179,
2512 179, 179, 179, 179, 179, 179, 179, 179, 179, 178,
2513 178, 178, 178, 178, 178, 178, 178, 179, 194, 199,
2514 203, 199, 199, 199, 199, 222, 179, 179, 179, 179,
2515 199, 38, 199, 212, 199, 211, 200, 200, 200, 205,
2516 199, 199, 199, 200, 200, 199, 209, 210, 178, 178,
2517 178, 178, 178, 199, 199, 206, 207, 207, 206, 208,
2518 199, 200, 199, 200, 179, 179, 179, 179, 179, 179,
2519 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2520 179, 179, 210, 179, 200, 72, 200, 201, 200, 200,
2521 199, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2522 179, 179, 179, 179
2523 };
2524
2525 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
2526 static const yytype_uint8 yyr1[] =
2527 {
2528 0, 184, 186, 185, 187, 185, 188, 188, 189, 189,
2529 189, 189, 189, 190, 189, 191, 191, 191, 192, 192,
2530 192, 193, 193, 193, 193, 193, 193, 193, 193, 194,
2531 194, 195, 195, 195, 195, 195, 195, 195, 195, 196,
2532 196, 198, 197, 199, 199, 200, 200, 200, 201, 201,
2533 202, 203, 204, 205, 206, 207, 208, 209, 210, 210,
2534 211, 212, 212, 213, 214, 215, 215, 216, 217, 217,
2535 217, 217, 218, 218, 218, 219, 219, 220, 219, 221,
2536 219, 219, 222, 222, 223, 223, 223, 223, 223, 223,
2537 223, 223, 223, 223, 224, 223, 225, 225, 225, 225,
2538 226, 226, 226, 227, 227, 227, 227, 227, 227
2539 };
2540
2541 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
2542 static const yytype_int8 yyr2[] =
2543 {
2544 0, 2, 0, 6, 0, 6, 2, 0, 1, 1,
2545 4, 4, 4, 0, 2, 2, 4, 0, 1, 1,
2546 4, 4, 4, 4, 4, 4, 4, 4, 4, 2,
2547 0, 4, 4, 4, 4, 4, 4, 4, 4, 1,
2548 4, 0, 2, 1, 1, 1, 1, 1, 1, 1,
2549 1, 1, 1, 1, 1, 1, 1, 1, 2, 0,
2550 1, 1, 1, 4, 1, 1, 1, 1, 4, 4,
2551 1, 1, 4, 4, 1, 4, 4, 0, 2, 0,
2552 2, 1, 2, 0, 4, 4, 4, 4, 4, 4,
2553 4, 4, 4, 4, 0, 2, 4, 4, 4, 4,
2554 4, 4, 4, 4, 4, 4, 4, 4, 4
2555 };
2556
2557
2558 enum { YYENOMEM = -2 };
2559
2560 #define yyerrok (yyerrstatus = 0)
2561 #define yyclearin (yychar = MQTT_EMPTY)
2562
2563 #define YYACCEPT goto yyacceptlab
2564 #define YYABORT goto yyabortlab
2565 #define YYERROR goto yyerrorlab
2566 #define YYNOMEM goto yyexhaustedlab
2567
2568
2569 #define YYRECOVERING() (!!yyerrstatus)
2570
2571 #define YYBACKUP(Token, Value) \
2572 do \
2573 if (yychar == MQTT_EMPTY) \
2574 { \
2575 yychar = (Token); \
2576 yylval = (Value); \
2577 YYPOPSTACK (yylen); \
2578 yystate = *yyssp; \
2579 goto yybackup; \
2580 } \
2581 else \
2582 { \
2583 yyerror (&yylloc, lexer, instance, arg, YY_("syntax error: cannot back up")); \
2584 YYERROR; \
2585 } \
2586 while (0)
2587
2588 /* Backward compatibility with an undocumented macro.
2589 Use MQTT_error or MQTT_UNDEF. */
2590 #define YYERRCODE MQTT_UNDEF
2591
2592 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2593 If N is 0, then set CURRENT to the empty location which ends
2594 the previous symbol: RHS[0] (always defined). */
2595
2596 #ifndef YYLLOC_DEFAULT
2597 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2598 do \
2599 if (N) \
2600 { \
2601 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2602 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2603 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2604 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2605 } \
2606 else \
2607 { \
2608 (Current).first_line = (Current).last_line = \
2609 YYRHSLOC (Rhs, 0).last_line; \
2610 (Current).first_column = (Current).last_column = \
2611 YYRHSLOC (Rhs, 0).last_column; \
2612 } \
2613 while (0)
2614 #endif
2615
2616 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2617
2618
2619 /* Enable debugging if requested. */
2620 #if MQTT_DEBUG
2621
2622 # ifndef YYFPRINTF
2623 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2624 # define YYFPRINTF fprintf
2625 # endif
2626
2627 # define YYDPRINTF(Args) \
2628 do { \
2629 if (yydebug) \
2630 YYFPRINTF Args; \
2631 } while (0)
2632
2633
2634 /* YYLOCATION_PRINT -- Print the location on the stream.
2635 This macro was not mandated originally: define only if we know
2636 we won't break user code: when these are the locations we know. */
2637
2638 # ifndef YYLOCATION_PRINT
2639
2640 # if defined YY_LOCATION_PRINT
2641
2642 /* Temporary convenience wrapper in case some people defined the
2643 undocumented and private YY_LOCATION_PRINT macros. */
2644 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2645
2646 # elif defined MQTT_LTYPE_IS_TRIVIAL && MQTT_LTYPE_IS_TRIVIAL
2647
2648 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2649
2650 YY_ATTRIBUTE_UNUSED
2651 static int
yy_location_print_(FILE * yyo,YYLTYPE const * const yylocp)2652 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2653 {
2654 int res = 0;
2655 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2656 if (0 <= yylocp->first_line)
2657 {
2658 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2659 if (0 <= yylocp->first_column)
2660 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2661 }
2662 if (0 <= yylocp->last_line)
2663 {
2664 if (yylocp->first_line < yylocp->last_line)
2665 {
2666 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2667 if (0 <= end_col)
2668 res += YYFPRINTF (yyo, ".%d", end_col);
2669 }
2670 else if (0 <= end_col && yylocp->first_column < end_col)
2671 res += YYFPRINTF (yyo, "-%d", end_col);
2672 }
2673 return res;
2674 }
2675
2676 # define YYLOCATION_PRINT yy_location_print_
2677
2678 /* Temporary convenience wrapper in case some people defined the
2679 undocumented and private YY_LOCATION_PRINT macros. */
2680 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2681
2682 # else
2683
2684 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2685 /* Temporary convenience wrapper in case some people defined the
2686 undocumented and private YY_LOCATION_PRINT macros. */
2687 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2688
2689 # endif
2690 # endif /* !defined YYLOCATION_PRINT */
2691
2692
2693 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2694 do { \
2695 if (yydebug) \
2696 { \
2697 YYFPRINTF (stderr, "%s ", Title); \
2698 yy_symbol_print (stderr, \
2699 Kind, Value, Location, lexer, instance, arg); \
2700 YYFPRINTF (stderr, "\n"); \
2701 } \
2702 } while (0)
2703
2704
2705 /*-----------------------------------.
2706 | Print this symbol's value on YYO. |
2707 `-----------------------------------*/
2708
2709 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,CfgLexer * lexer,LogDriver ** instance,gpointer arg)2710 yy_symbol_value_print (FILE *yyo,
2711 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, CfgLexer *lexer, LogDriver **instance, gpointer arg)
2712 {
2713 FILE *yyoutput = yyo;
2714 YY_USE (yyoutput);
2715 YY_USE (yylocationp);
2716 YY_USE (lexer);
2717 YY_USE (instance);
2718 YY_USE (arg);
2719 if (!yyvaluep)
2720 return;
2721 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2722 YY_USE (yykind);
2723 YY_IGNORE_MAYBE_UNINITIALIZED_END
2724 }
2725
2726
2727 /*---------------------------.
2728 | Print this symbol on YYO. |
2729 `---------------------------*/
2730
2731 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,CfgLexer * lexer,LogDriver ** instance,gpointer arg)2732 yy_symbol_print (FILE *yyo,
2733 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, CfgLexer *lexer, LogDriver **instance, gpointer arg)
2734 {
2735 YYFPRINTF (yyo, "%s %s (",
2736 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2737
2738 YYLOCATION_PRINT (yyo, yylocationp);
2739 YYFPRINTF (yyo, ": ");
2740 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, lexer, instance, arg);
2741 YYFPRINTF (yyo, ")");
2742 }
2743
2744 /*------------------------------------------------------------------.
2745 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2746 | TOP (included). |
2747 `------------------------------------------------------------------*/
2748
2749 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)2750 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2751 {
2752 YYFPRINTF (stderr, "Stack now");
2753 for (; yybottom <= yytop; yybottom++)
2754 {
2755 int yybot = *yybottom;
2756 YYFPRINTF (stderr, " %d", yybot);
2757 }
2758 YYFPRINTF (stderr, "\n");
2759 }
2760
2761 # define YY_STACK_PRINT(Bottom, Top) \
2762 do { \
2763 if (yydebug) \
2764 yy_stack_print ((Bottom), (Top)); \
2765 } while (0)
2766
2767
2768 /*------------------------------------------------.
2769 | Report that the YYRULE is going to be reduced. |
2770 `------------------------------------------------*/
2771
2772 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,YYLTYPE * yylsp,int yyrule,CfgLexer * lexer,LogDriver ** instance,gpointer arg)2773 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,
2774 int yyrule, CfgLexer *lexer, LogDriver **instance, gpointer arg)
2775 {
2776 int yylno = yyrline[yyrule];
2777 int yynrhs = yyr2[yyrule];
2778 int yyi;
2779 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2780 yyrule - 1, yylno);
2781 /* The symbols being reduced. */
2782 for (yyi = 0; yyi < yynrhs; yyi++)
2783 {
2784 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2785 yy_symbol_print (stderr,
2786 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2787 &yyvsp[(yyi + 1) - (yynrhs)],
2788 &(yylsp[(yyi + 1) - (yynrhs)]), lexer, instance, arg);
2789 YYFPRINTF (stderr, "\n");
2790 }
2791 }
2792
2793 # define YY_REDUCE_PRINT(Rule) \
2794 do { \
2795 if (yydebug) \
2796 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, lexer, instance, arg); \
2797 } while (0)
2798
2799 /* Nonzero means print parse trace. It is left uninitialized so that
2800 multiple parsers can coexist. */
2801 int yydebug;
2802 #else /* !MQTT_DEBUG */
2803 # define YYDPRINTF(Args) ((void) 0)
2804 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2805 # define YY_STACK_PRINT(Bottom, Top)
2806 # define YY_REDUCE_PRINT(Rule)
2807 #endif /* !MQTT_DEBUG */
2808
2809
2810 /* YYINITDEPTH -- initial size of the parser's stacks. */
2811 #ifndef YYINITDEPTH
2812 # define YYINITDEPTH 200
2813 #endif
2814
2815 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2816 if the built-in stack extension method is used).
2817
2818 Do not make this value too large; the results are undefined if
2819 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2820 evaluated with infinite-precision integer arithmetic. */
2821
2822 #ifndef YYMAXDEPTH
2823 # define YYMAXDEPTH 10000
2824 #endif
2825
2826
2827 /* Context of a parse error. */
2828 typedef struct
2829 {
2830 yy_state_t *yyssp;
2831 yysymbol_kind_t yytoken;
2832 YYLTYPE *yylloc;
2833 } yypcontext_t;
2834
2835 /* Put in YYARG at most YYARGN of the expected tokens given the
2836 current YYCTX, and return the number of tokens stored in YYARG. If
2837 YYARG is null, return the number of expected tokens (guaranteed to
2838 be less than YYNTOKENS). Return YYENOMEM on memory exhaustion.
2839 Return 0 if there are more than YYARGN expected tokens, yet fill
2840 YYARG up to YYARGN. */
2841 static int
yypcontext_expected_tokens(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)2842 yypcontext_expected_tokens (const yypcontext_t *yyctx,
2843 yysymbol_kind_t yyarg[], int yyargn)
2844 {
2845 /* Actual size of YYARG. */
2846 int yycount = 0;
2847 int yyn = yypact[+*yyctx->yyssp];
2848 if (!yypact_value_is_default (yyn))
2849 {
2850 /* Start YYX at -YYN if negative to avoid negative indexes in
2851 YYCHECK. In other words, skip the first -YYN actions for
2852 this state because they are default actions. */
2853 int yyxbegin = yyn < 0 ? -yyn : 0;
2854 /* Stay within bounds of both yycheck and yytname. */
2855 int yychecklim = YYLAST - yyn + 1;
2856 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2857 int yyx;
2858 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2859 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
2860 && !yytable_value_is_error (yytable[yyx + yyn]))
2861 {
2862 if (!yyarg)
2863 ++yycount;
2864 else if (yycount == yyargn)
2865 return 0;
2866 else
2867 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
2868 }
2869 }
2870 if (yyarg && yycount == 0 && 0 < yyargn)
2871 yyarg[0] = YYSYMBOL_YYEMPTY;
2872 return yycount;
2873 }
2874
2875
2876
2877
2878 #ifndef yystrlen
2879 # if defined __GLIBC__ && defined _STRING_H
2880 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2881 # else
2882 /* Return the length of YYSTR. */
2883 static YYPTRDIFF_T
yystrlen(const char * yystr)2884 yystrlen (const char *yystr)
2885 {
2886 YYPTRDIFF_T yylen;
2887 for (yylen = 0; yystr[yylen]; yylen++)
2888 continue;
2889 return yylen;
2890 }
2891 # endif
2892 #endif
2893
2894 #ifndef yystpcpy
2895 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2896 # define yystpcpy stpcpy
2897 # else
2898 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2899 YYDEST. */
2900 static char *
yystpcpy(char * yydest,const char * yysrc)2901 yystpcpy (char *yydest, const char *yysrc)
2902 {
2903 char *yyd = yydest;
2904 const char *yys = yysrc;
2905
2906 while ((*yyd++ = *yys++) != '\0')
2907 continue;
2908
2909 return yyd - 1;
2910 }
2911 # endif
2912 #endif
2913
2914 #ifndef yytnamerr
2915 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2916 quotes and backslashes, so that it's suitable for yyerror. The
2917 heuristic is that double-quoting is unnecessary unless the string
2918 contains an apostrophe, a comma, or backslash (other than
2919 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2920 null, do not copy; instead, return the length of what the result
2921 would have been. */
2922 static YYPTRDIFF_T
yytnamerr(char * yyres,const char * yystr)2923 yytnamerr (char *yyres, const char *yystr)
2924 {
2925 if (*yystr == '"')
2926 {
2927 YYPTRDIFF_T yyn = 0;
2928 char const *yyp = yystr;
2929 for (;;)
2930 switch (*++yyp)
2931 {
2932 case '\'':
2933 case ',':
2934 goto do_not_strip_quotes;
2935
2936 case '\\':
2937 if (*++yyp != '\\')
2938 goto do_not_strip_quotes;
2939 else
2940 goto append;
2941
2942 append:
2943 default:
2944 if (yyres)
2945 yyres[yyn] = *yyp;
2946 yyn++;
2947 break;
2948
2949 case '"':
2950 if (yyres)
2951 yyres[yyn] = '\0';
2952 return yyn;
2953 }
2954 do_not_strip_quotes: ;
2955 }
2956
2957 if (yyres)
2958 return yystpcpy (yyres, yystr) - yyres;
2959 else
2960 return yystrlen (yystr);
2961 }
2962 #endif
2963
2964
2965 static int
yy_syntax_error_arguments(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)2966 yy_syntax_error_arguments (const yypcontext_t *yyctx,
2967 yysymbol_kind_t yyarg[], int yyargn)
2968 {
2969 /* Actual size of YYARG. */
2970 int yycount = 0;
2971 /* There are many possibilities here to consider:
2972 - If this state is a consistent state with a default action, then
2973 the only way this function was invoked is if the default action
2974 is an error action. In that case, don't check for expected
2975 tokens because there are none.
2976 - The only way there can be no lookahead present (in yychar) is if
2977 this state is a consistent state with a default action. Thus,
2978 detecting the absence of a lookahead is sufficient to determine
2979 that there is no unexpected or expected token to report. In that
2980 case, just report a simple "syntax error".
2981 - Don't assume there isn't a lookahead just because this state is a
2982 consistent state with a default action. There might have been a
2983 previous inconsistent state, consistent state with a non-default
2984 action, or user semantic action that manipulated yychar.
2985 - Of course, the expected token list depends on states to have
2986 correct lookahead information, and it depends on the parser not
2987 to perform extra reductions after fetching a lookahead from the
2988 scanner and before detecting a syntax error. Thus, state merging
2989 (from LALR or IELR) and default reductions corrupt the expected
2990 token list. However, the list is correct for canonical LR with
2991 one exception: it will still contain any token that will not be
2992 accepted due to an error action in a later state.
2993 */
2994 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
2995 {
2996 int yyn;
2997 if (yyarg)
2998 yyarg[yycount] = yyctx->yytoken;
2999 ++yycount;
3000 yyn = yypcontext_expected_tokens (yyctx,
3001 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
3002 if (yyn == YYENOMEM)
3003 return YYENOMEM;
3004 else
3005 yycount += yyn;
3006 }
3007 return yycount;
3008 }
3009
3010 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
3011 about the unexpected token YYTOKEN for the state stack whose top is
3012 YYSSP.
3013
3014 Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is
3015 not large enough to hold the message. In that case, also set
3016 *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the
3017 required number of bytes is too large to store. */
3018 static int
yysyntax_error(YYPTRDIFF_T * yymsg_alloc,char ** yymsg,const yypcontext_t * yyctx)3019 yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
3020 const yypcontext_t *yyctx)
3021 {
3022 enum { YYARGS_MAX = 5 };
3023 /* Internationalized format string. */
3024 const char *yyformat = YY_NULLPTR;
3025 /* Arguments of yyformat: reported tokens (one for the "unexpected",
3026 one per "expected"). */
3027 yysymbol_kind_t yyarg[YYARGS_MAX];
3028 /* Cumulated lengths of YYARG. */
3029 YYPTRDIFF_T yysize = 0;
3030
3031 /* Actual size of YYARG. */
3032 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
3033 if (yycount == YYENOMEM)
3034 return YYENOMEM;
3035
3036 switch (yycount)
3037 {
3038 #define YYCASE_(N, S) \
3039 case N: \
3040 yyformat = S; \
3041 break
3042 default: /* Avoid compiler warnings. */
3043 YYCASE_(0, YY_("syntax error"));
3044 YYCASE_(1, YY_("syntax error, unexpected %s"));
3045 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
3046 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
3047 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
3048 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
3049 #undef YYCASE_
3050 }
3051
3052 /* Compute error message size. Don't count the "%s"s, but reserve
3053 room for the terminator. */
3054 yysize = yystrlen (yyformat) - 2 * yycount + 1;
3055 {
3056 int yyi;
3057 for (yyi = 0; yyi < yycount; ++yyi)
3058 {
3059 YYPTRDIFF_T yysize1
3060 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
3061 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
3062 yysize = yysize1;
3063 else
3064 return YYENOMEM;
3065 }
3066 }
3067
3068 if (*yymsg_alloc < yysize)
3069 {
3070 *yymsg_alloc = 2 * yysize;
3071 if (! (yysize <= *yymsg_alloc
3072 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
3073 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
3074 return -1;
3075 }
3076
3077 /* Avoid sprintf, as that infringes on the user's name space.
3078 Don't have undefined behavior even if the translation
3079 produced a string with the wrong number of "%s"s. */
3080 {
3081 char *yyp = *yymsg;
3082 int yyi = 0;
3083 while ((*yyp = *yyformat) != '\0')
3084 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
3085 {
3086 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
3087 yyformat += 2;
3088 }
3089 else
3090 {
3091 ++yyp;
3092 ++yyformat;
3093 }
3094 }
3095 return 0;
3096 }
3097
3098
3099 /*-----------------------------------------------.
3100 | Release the memory associated to this symbol. |
3101 `-----------------------------------------------*/
3102
3103 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep,YYLTYPE * yylocationp,CfgLexer * lexer,LogDriver ** instance,gpointer arg)3104 yydestruct (const char *yymsg,
3105 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, CfgLexer *lexer, LogDriver **instance, gpointer arg)
3106 {
3107 YY_USE (yyvaluep);
3108 YY_USE (yylocationp);
3109 YY_USE (lexer);
3110 YY_USE (instance);
3111 YY_USE (arg);
3112 if (!yymsg)
3113 yymsg = "Deleting";
3114 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
3115
3116 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3117 switch (yykind)
3118 {
3119 case YYSYMBOL_LL_IDENTIFIER: /* LL_IDENTIFIER */
3120 #line 315 "modules/mqtt/mqtt-grammar.y"
3121 { free(((*yyvaluep).cptr)); }
3122 #line 3123 "modules/mqtt/mqtt-grammar.c"
3123 break;
3124
3125 case YYSYMBOL_LL_STRING: /* LL_STRING */
3126 #line 315 "modules/mqtt/mqtt-grammar.y"
3127 { free(((*yyvaluep).cptr)); }
3128 #line 3129 "modules/mqtt/mqtt-grammar.c"
3129 break;
3130
3131 case YYSYMBOL_LL_BLOCK: /* LL_BLOCK */
3132 #line 315 "modules/mqtt/mqtt-grammar.y"
3133 { free(((*yyvaluep).cptr)); }
3134 #line 3135 "modules/mqtt/mqtt-grammar.c"
3135 break;
3136
3137 case YYSYMBOL_string: /* string */
3138 #line 315 "modules/mqtt/mqtt-grammar.y"
3139 { free(((*yyvaluep).cptr)); }
3140 #line 3141 "modules/mqtt/mqtt-grammar.c"
3141 break;
3142
3143 case YYSYMBOL_path: /* path */
3144 #line 315 "modules/mqtt/mqtt-grammar.y"
3145 { free(((*yyvaluep).cptr)); }
3146 #line 3147 "modules/mqtt/mqtt-grammar.c"
3147 break;
3148
3149 case YYSYMBOL_path_check: /* path_check */
3150 #line 315 "modules/mqtt/mqtt-grammar.y"
3151 { free(((*yyvaluep).cptr)); }
3152 #line 3153 "modules/mqtt/mqtt-grammar.c"
3153 break;
3154
3155 case YYSYMBOL_path_secret: /* path_secret */
3156 #line 315 "modules/mqtt/mqtt-grammar.y"
3157 { free(((*yyvaluep).cptr)); }
3158 #line 3159 "modules/mqtt/mqtt-grammar.c"
3159 break;
3160
3161 default:
3162 break;
3163 }
3164 YY_IGNORE_MAYBE_UNINITIALIZED_END
3165 }
3166
3167
3168
3169
3170
3171
3172 /*----------.
3173 | yyparse. |
3174 `----------*/
3175
3176 int
yyparse(CfgLexer * lexer,LogDriver ** instance,gpointer arg)3177 yyparse (CfgLexer *lexer, LogDriver **instance, gpointer arg)
3178 {
3179 /* Lookahead token kind. */
3180 int yychar;
3181
3182
3183 /* The semantic value of the lookahead symbol. */
3184 /* Default value used for initialization, for pacifying older GCCs
3185 or non-GCC compilers. */
3186 YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
3187 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
3188
3189 /* Location data for the lookahead symbol. */
3190 static YYLTYPE yyloc_default
3191 # if defined MQTT_LTYPE_IS_TRIVIAL && MQTT_LTYPE_IS_TRIVIAL
3192 = { 1, 1, 1, 1 }
3193 # endif
3194 ;
3195 YYLTYPE yylloc = yyloc_default;
3196
3197 /* Number of syntax errors so far. */
3198 int yynerrs = 0;
3199
3200 yy_state_fast_t yystate = 0;
3201 /* Number of tokens to shift before error messages enabled. */
3202 int yyerrstatus = 0;
3203
3204 /* Refer to the stacks through separate pointers, to allow yyoverflow
3205 to reallocate them elsewhere. */
3206
3207 /* Their size. */
3208 YYPTRDIFF_T yystacksize = YYINITDEPTH;
3209
3210 /* The state stack: array, bottom, top. */
3211 yy_state_t yyssa[YYINITDEPTH];
3212 yy_state_t *yyss = yyssa;
3213 yy_state_t *yyssp = yyss;
3214
3215 /* The semantic value stack: array, bottom, top. */
3216 YYSTYPE yyvsa[YYINITDEPTH];
3217 YYSTYPE *yyvs = yyvsa;
3218 YYSTYPE *yyvsp = yyvs;
3219
3220 /* The location stack: array, bottom, top. */
3221 YYLTYPE yylsa[YYINITDEPTH];
3222 YYLTYPE *yyls = yylsa;
3223 YYLTYPE *yylsp = yyls;
3224
3225 int yyn;
3226 /* The return value of yyparse. */
3227 int yyresult;
3228 /* Lookahead symbol kind. */
3229 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
3230 /* The variables used to return semantic value and location from the
3231 action routines. */
3232 YYSTYPE yyval;
3233 YYLTYPE yyloc;
3234
3235 /* The locations where the error started and ended. */
3236 YYLTYPE yyerror_range[3];
3237
3238 /* Buffer for error messages, and its allocated size. */
3239 char yymsgbuf[128];
3240 char *yymsg = yymsgbuf;
3241 YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
3242
3243 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
3244
3245 /* The number of symbols on the RHS of the reduced rule.
3246 Keep to zero when no symbol should be popped. */
3247 int yylen = 0;
3248
3249 YYDPRINTF ((stderr, "Starting parse\n"));
3250
3251 yychar = MQTT_EMPTY; /* Cause a token to be read. */
3252
3253 yylsp[0] = yylloc;
3254 goto yysetstate;
3255
3256
3257 /*------------------------------------------------------------.
3258 | yynewstate -- push a new state, which is found in yystate. |
3259 `------------------------------------------------------------*/
3260 yynewstate:
3261 /* In all cases, when you get here, the value and location stacks
3262 have just been pushed. So pushing a state here evens the stacks. */
3263 yyssp++;
3264
3265
3266 /*--------------------------------------------------------------------.
3267 | yysetstate -- set current state (the top of the stack) to yystate. |
3268 `--------------------------------------------------------------------*/
3269 yysetstate:
3270 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3271 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
3272 YY_IGNORE_USELESS_CAST_BEGIN
3273 *yyssp = YY_CAST (yy_state_t, yystate);
3274 YY_IGNORE_USELESS_CAST_END
3275 YY_STACK_PRINT (yyss, yyssp);
3276
3277 if (yyss + yystacksize - 1 <= yyssp)
3278 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
3279 YYNOMEM;
3280 #else
3281 {
3282 /* Get the current used size of the three stacks, in elements. */
3283 YYPTRDIFF_T yysize = yyssp - yyss + 1;
3284
3285 # if defined yyoverflow
3286 {
3287 /* Give user a chance to reallocate the stack. Use copies of
3288 these so that the &'s don't force the real ones into
3289 memory. */
3290 yy_state_t *yyss1 = yyss;
3291 YYSTYPE *yyvs1 = yyvs;
3292 YYLTYPE *yyls1 = yyls;
3293
3294 /* Each stack pointer address is followed by the size of the
3295 data in use in that stack, in bytes. This used to be a
3296 conditional around just the two extra args, but that might
3297 be undefined if yyoverflow is a macro. */
3298 yyoverflow (YY_("memory exhausted"),
3299 &yyss1, yysize * YYSIZEOF (*yyssp),
3300 &yyvs1, yysize * YYSIZEOF (*yyvsp),
3301 &yyls1, yysize * YYSIZEOF (*yylsp),
3302 &yystacksize);
3303 yyss = yyss1;
3304 yyvs = yyvs1;
3305 yyls = yyls1;
3306 }
3307 # else /* defined YYSTACK_RELOCATE */
3308 /* Extend the stack our own way. */
3309 if (YYMAXDEPTH <= yystacksize)
3310 YYNOMEM;
3311 yystacksize *= 2;
3312 if (YYMAXDEPTH < yystacksize)
3313 yystacksize = YYMAXDEPTH;
3314
3315 {
3316 yy_state_t *yyss1 = yyss;
3317 union yyalloc *yyptr =
3318 YY_CAST (union yyalloc *,
3319 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
3320 if (! yyptr)
3321 YYNOMEM;
3322 YYSTACK_RELOCATE (yyss_alloc, yyss);
3323 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3324 YYSTACK_RELOCATE (yyls_alloc, yyls);
3325 # undef YYSTACK_RELOCATE
3326 if (yyss1 != yyssa)
3327 YYSTACK_FREE (yyss1);
3328 }
3329 # endif
3330
3331 yyssp = yyss + yysize - 1;
3332 yyvsp = yyvs + yysize - 1;
3333 yylsp = yyls + yysize - 1;
3334
3335 YY_IGNORE_USELESS_CAST_BEGIN
3336 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
3337 YY_CAST (long, yystacksize)));
3338 YY_IGNORE_USELESS_CAST_END
3339
3340 if (yyss + yystacksize - 1 <= yyssp)
3341 YYABORT;
3342 }
3343 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
3344
3345
3346 if (yystate == YYFINAL)
3347 YYACCEPT;
3348
3349 goto yybackup;
3350
3351
3352 /*-----------.
3353 | yybackup. |
3354 `-----------*/
3355 yybackup:
3356 /* Do appropriate processing given the current state. Read a
3357 lookahead token if we need one and don't already have one. */
3358
3359 /* First try to decide what to do without reference to lookahead token. */
3360 yyn = yypact[yystate];
3361 if (yypact_value_is_default (yyn))
3362 goto yydefault;
3363
3364 /* Not known => get a lookahead token if don't already have one. */
3365
3366 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
3367 if (yychar == MQTT_EMPTY)
3368 {
3369 YYDPRINTF ((stderr, "Reading a token\n"));
3370 yychar = yylex (&yylval, &yylloc, lexer);
3371 }
3372
3373 if (yychar <= MQTT_EOF)
3374 {
3375 yychar = MQTT_EOF;
3376 yytoken = YYSYMBOL_YYEOF;
3377 YYDPRINTF ((stderr, "Now at end of input.\n"));
3378 }
3379 else if (yychar == MQTT_error)
3380 {
3381 /* The scanner already issued an error message, process directly
3382 to error recovery. But do not keep the error token as
3383 lookahead, it is too special and may lead us to an endless
3384 loop in error recovery. */
3385 yychar = MQTT_UNDEF;
3386 yytoken = YYSYMBOL_YYerror;
3387 yyerror_range[1] = yylloc;
3388 goto yyerrlab1;
3389 }
3390 else
3391 {
3392 yytoken = YYTRANSLATE (yychar);
3393 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3394 }
3395
3396 /* If the proper action on seeing token YYTOKEN is to reduce or to
3397 detect an error, take that action. */
3398 yyn += yytoken;
3399 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3400 goto yydefault;
3401 yyn = yytable[yyn];
3402 if (yyn <= 0)
3403 {
3404 if (yytable_value_is_error (yyn))
3405 goto yyerrlab;
3406 yyn = -yyn;
3407 goto yyreduce;
3408 }
3409
3410 /* Count tokens shifted since error; after three, turn off error
3411 status. */
3412 if (yyerrstatus)
3413 yyerrstatus--;
3414
3415 /* Shift the lookahead token. */
3416 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3417 yystate = yyn;
3418 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3419 *++yyvsp = yylval;
3420 YY_IGNORE_MAYBE_UNINITIALIZED_END
3421 *++yylsp = yylloc;
3422
3423 /* Discard the shifted token. */
3424 yychar = MQTT_EMPTY;
3425 goto yynewstate;
3426
3427
3428 /*-----------------------------------------------------------.
3429 | yydefault -- do the default action for the current state. |
3430 `-----------------------------------------------------------*/
3431 yydefault:
3432 yyn = yydefact[yystate];
3433 if (yyn == 0)
3434 goto yyerrlab;
3435 goto yyreduce;
3436
3437
3438 /*-----------------------------.
3439 | yyreduce -- do a reduction. |
3440 `-----------------------------*/
3441 yyreduce:
3442 /* yyn is the number of a rule to reduce with. */
3443 yylen = yyr2[yyn];
3444
3445 /* If YYLEN is nonzero, implement the default value of the action:
3446 '$$ = $1'.
3447
3448 Otherwise, the following line sets YYVAL to garbage.
3449 This behavior is undocumented and Bison
3450 users should not rely upon it. Assigning to YYVAL
3451 unconditionally makes the parser a bit smaller, and it avoids a
3452 GCC warning that YYVAL may be used uninitialized. */
3453 yyval = yyvsp[1-yylen];
3454
3455 /* Default location. */
3456 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
3457 yyerror_range[1] = yyloc;
3458 YY_REDUCE_PRINT (yyn);
3459 switch (yyn)
3460 {
3461 case 2: /* $@1: %empty */
3462 #line 422 "modules/mqtt/mqtt-grammar.y"
3463 {
3464 last_driver = *instance = mqtt_dd_new(configuration);
3465 last_options = mqtt_dd_get_options(last_driver);
3466 }
3467 #line 3468 "modules/mqtt/mqtt-grammar.c"
3468 break;
3469
3470 case 3: /* start: LL_CONTEXT_DESTINATION KW_MQTT $@1 '(' mqtt_destination_options ')' */
3471 #line 426 "modules/mqtt/mqtt-grammar.y"
3472 { YYACCEPT; }
3473 #line 3474 "modules/mqtt/mqtt-grammar.c"
3474 break;
3475
3476 case 4: /* $@2: %empty */
3477 #line 428 "modules/mqtt/mqtt-grammar.y"
3478 {
3479 last_driver = *instance = mqtt_sd_new(configuration);
3480 last_options = mqtt_sd_get_options(last_driver);
3481 }
3482 #line 3483 "modules/mqtt/mqtt-grammar.c"
3483 break;
3484
3485 case 5: /* start: LL_CONTEXT_SOURCE KW_MQTT $@2 '(' mqtt_source_options ')' */
3486 #line 432 "modules/mqtt/mqtt-grammar.y"
3487 { YYACCEPT; }
3488 #line 3489 "modules/mqtt/mqtt-grammar.c"
3489 break;
3490
3491 case 10: /* mqtt_destination_option: KW_TOPIC '(' template_content ')' */
3492 #line 443 "modules/mqtt/mqtt-grammar.y"
3493 { mqtt_dd_set_topic_template(last_driver, (yyvsp[-1].ptr)); }
3494 #line 3495 "modules/mqtt/mqtt-grammar.c"
3495 break;
3496
3497 case 11: /* mqtt_destination_option: KW_FALLBACK_TOPIC '(' string ')' */
3498 #line 444 "modules/mqtt/mqtt-grammar.y"
3499 { mqtt_dd_set_fallback_topic(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3500 #line 3501 "modules/mqtt/mqtt-grammar.c"
3501 break;
3502
3503 case 12: /* mqtt_destination_option: KW_TEMPLATE '(' template_content ')' */
3504 #line 445 "modules/mqtt/mqtt-grammar.y"
3505 { mqtt_dd_set_message_template_ref(last_driver, (yyvsp[-1].ptr)); }
3506 #line 3507 "modules/mqtt/mqtt-grammar.c"
3507 break;
3508
3509 case 13: /* $@3: %empty */
3510 #line 446 "modules/mqtt/mqtt-grammar.y"
3511 { last_template_options = mqtt_dd_get_template_options(last_driver); }
3512 #line 3513 "modules/mqtt/mqtt-grammar.c"
3513 break;
3514
3515 case 16: /* mqtt_source_options: KW_CLEANSESSION '(' yesno ')' */
3516 #line 451 "modules/mqtt/mqtt-grammar.y"
3517 { mqtt_client_options_set_cleansession(last_options, (yyvsp[-1].num)); }
3518 #line 3519 "modules/mqtt/mqtt-grammar.c"
3519 break;
3520
3521 case 20: /* mqtt_source_option: KW_TOPIC '(' string ')' */
3522 #line 458 "modules/mqtt/mqtt-grammar.y"
3523 { mqtt_sd_set_topic(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3524 #line 3525 "modules/mqtt/mqtt-grammar.c"
3525 break;
3526
3527 case 21: /* mqtt_option: KW_KEEPALIVE '(' positive_integer ')' */
3528 #line 462 "modules/mqtt/mqtt-grammar.y"
3529 { mqtt_client_options_set_keepalive(last_options, (yyvsp[-1].num)); }
3530 #line 3531 "modules/mqtt/mqtt-grammar.c"
3531 break;
3532
3533 case 22: /* mqtt_option: KW_ADDRESS '(' string ')' */
3534 #line 464 "modules/mqtt/mqtt-grammar.y"
3535 {
3536 CHECK_ERROR(mqtt_client_options_set_address(last_options, (yyvsp[-1].cptr)), (yylsp[-3]), "Invalid address");
3537 free((yyvsp[-1].cptr));
3538 }
3539 #line 3540 "modules/mqtt/mqtt-grammar.c"
3540 break;
3541
3542 case 23: /* mqtt_option: KW_QOS '(' nonnegative_integer ')' */
3543 #line 469 "modules/mqtt/mqtt-grammar.y"
3544 {
3545 CHECK_ERROR(0 <= (yyvsp[-1].num) && (yyvsp[-1].num) <= 2, (yylsp[-3]), "Allowed QOS values: 0, 1, 2");
3546 mqtt_client_options_set_qos(last_options, (yyvsp[-1].num));
3547 }
3548 #line 3549 "modules/mqtt/mqtt-grammar.c"
3549 break;
3550
3551 case 24: /* mqtt_option: KW_CLIENT_ID '(' string ')' */
3552 #line 473 "modules/mqtt/mqtt-grammar.y"
3553 { CHECK_ERROR(mqtt_client_options_set_client_id(last_options, (yyvsp[-1].cptr)), (yylsp[-1]), "mqtt: client_id can't be empty"); free((yyvsp[-1].cptr)); }
3554 #line 3555 "modules/mqtt/mqtt-grammar.c"
3555 break;
3556
3557 case 25: /* mqtt_option: KW_USERNAME '(' string ')' */
3558 #line 474 "modules/mqtt/mqtt-grammar.y"
3559 { mqtt_client_options_set_username(last_options, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3560 #line 3561 "modules/mqtt/mqtt-grammar.c"
3561 break;
3562
3563 case 26: /* mqtt_option: KW_PASSWORD '(' string ')' */
3564 #line 475 "modules/mqtt/mqtt-grammar.y"
3565 { mqtt_client_options_set_password(last_options, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3566 #line 3567 "modules/mqtt/mqtt-grammar.c"
3567 break;
3568
3569 case 27: /* mqtt_option: KW_HTTP_PROXY '(' string ')' */
3570 #line 476 "modules/mqtt/mqtt-grammar.y"
3571 { mqtt_client_options_set_http_proxy(last_options, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3572 #line 3573 "modules/mqtt/mqtt-grammar.c"
3573 break;
3574
3575 case 31: /* mqtt_tls_option: KW_CA_DIR '(' string ')' */
3576 #line 486 "modules/mqtt/mqtt-grammar.y"
3577 { mqtt_client_options_set_ca_dir(last_options, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3578 #line 3579 "modules/mqtt/mqtt-grammar.c"
3579 break;
3580
3581 case 32: /* mqtt_tls_option: KW_CA_FILE '(' path_check ')' */
3582 #line 487 "modules/mqtt/mqtt-grammar.y"
3583 { mqtt_client_options_set_ca_file(last_options, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3584 #line 3585 "modules/mqtt/mqtt-grammar.c"
3585 break;
3586
3587 case 33: /* mqtt_tls_option: KW_CERT_FILE '(' path_check ')' */
3588 #line 488 "modules/mqtt/mqtt-grammar.y"
3589 { mqtt_client_options_set_cert_file(last_options, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3590 #line 3591 "modules/mqtt/mqtt-grammar.c"
3591 break;
3592
3593 case 34: /* mqtt_tls_option: KW_KEY_FILE '(' path_secret ')' */
3594 #line 489 "modules/mqtt/mqtt-grammar.y"
3595 { mqtt_client_options_set_key_file(last_options, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3596 #line 3597 "modules/mqtt/mqtt-grammar.c"
3597 break;
3598
3599 case 35: /* mqtt_tls_option: KW_CIPHER_SUITE '(' string ')' */
3600 #line 490 "modules/mqtt/mqtt-grammar.y"
3601 { mqtt_client_options_set_cipher_suite(last_options, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3602 #line 3603 "modules/mqtt/mqtt-grammar.c"
3603 break;
3604
3605 case 36: /* mqtt_tls_option: KW_SSL_VERSION '(' string ')' */
3606 #line 491 "modules/mqtt/mqtt-grammar.y"
3607 { CHECK_ERROR(mqtt_client_options_set_ssl_version(last_options, (yyvsp[-1].cptr)), (yylsp[-1]),
3608 "mqtt: unsupported SSL version: %s", (yyvsp[-1].cptr));
3609 free((yyvsp[-1].cptr)); }
3610 #line 3611 "modules/mqtt/mqtt-grammar.c"
3611 break;
3612
3613 case 37: /* mqtt_tls_option: KW_PEER_VERIFY '(' yesno ')' */
3614 #line 494 "modules/mqtt/mqtt-grammar.y"
3615 { mqtt_client_options_set_peer_verify(last_options, (yyvsp[-1].num)); }
3616 #line 3617 "modules/mqtt/mqtt-grammar.c"
3617 break;
3618
3619 case 38: /* mqtt_tls_option: KW_USE_SYSTEM_CERT_STORE '(' yesno ')' */
3620 #line 495 "modules/mqtt/mqtt-grammar.y"
3621 { mqtt_client_options_use_system_cert_store(last_options, (yyvsp[-1].num)); }
3622 #line 3623 "modules/mqtt/mqtt-grammar.c"
3623 break;
3624
3625 case 39: /* template_content_inner: string */
3626 #line 732 "modules/mqtt/mqtt-grammar.y"
3627 {
3628 GError *error = NULL;
3629
3630 CHECK_ERROR_GERROR(log_template_compile(last_template, (yyvsp[0].cptr), &error), (yylsp[0]), error, "Error compiling template");
3631 free((yyvsp[0].cptr));
3632 }
3633 #line 3634 "modules/mqtt/mqtt-grammar.c"
3634 break;
3635
3636 case 40: /* template_content_inner: LL_IDENTIFIER '(' string ')' */
3637 #line 739 "modules/mqtt/mqtt-grammar.y"
3638 {
3639 GError *error = NULL;
3640
3641 CHECK_ERROR_GERROR(log_template_compile(last_template, (yyvsp[-1].cptr), &error), (yylsp[-1]), error, "Error compiling template");
3642 free((yyvsp[-1].cptr));
3643
3644 CHECK_ERROR_GERROR(log_template_set_type_hint(last_template, (yyvsp[-3].cptr), &error), (yylsp[-3]), error, "Error setting the template type-hint \"%s\"", (yyvsp[-3].cptr));
3645 free((yyvsp[-3].cptr));
3646 }
3647 #line 3648 "modules/mqtt/mqtt-grammar.c"
3648 break;
3649
3650 case 41: /* $@9: %empty */
3651 #line 751 "modules/mqtt/mqtt-grammar.y"
3652 { last_template = log_template_new(configuration, NULL); }
3653 #line 3654 "modules/mqtt/mqtt-grammar.c"
3654 break;
3655
3656 case 42: /* template_content: $@9 template_content_inner */
3657 #line 751 "modules/mqtt/mqtt-grammar.y"
3658 { (yyval.ptr) = last_template; }
3659 #line 3660 "modules/mqtt/mqtt-grammar.c"
3660 break;
3661
3662 case 45: /* yesno: KW_YES */
3663 #line 767 "modules/mqtt/mqtt-grammar.y"
3664 { (yyval.num) = 1; }
3665 #line 3666 "modules/mqtt/mqtt-grammar.c"
3666 break;
3667
3668 case 46: /* yesno: KW_NO */
3669 #line 768 "modules/mqtt/mqtt-grammar.y"
3670 { (yyval.num) = 0; }
3671 #line 3672 "modules/mqtt/mqtt-grammar.c"
3672 break;
3673
3674 case 47: /* yesno: LL_NUMBER */
3675 #line 769 "modules/mqtt/mqtt-grammar.y"
3676 { (yyval.num) = (yyvsp[0].num); }
3677 #line 3678 "modules/mqtt/mqtt-grammar.c"
3678 break;
3679
3680 case 48: /* dnsmode: yesno */
3681 #line 773 "modules/mqtt/mqtt-grammar.y"
3682 { (yyval.num) = (yyvsp[0].num); }
3683 #line 3684 "modules/mqtt/mqtt-grammar.c"
3684 break;
3685
3686 case 49: /* dnsmode: KW_PERSIST_ONLY */
3687 #line 774 "modules/mqtt/mqtt-grammar.y"
3688 { (yyval.num) = 2; }
3689 #line 3690 "modules/mqtt/mqtt-grammar.c"
3690 break;
3691
3692 case 50: /* nonnegative_integer64: LL_NUMBER */
3693 #line 779 "modules/mqtt/mqtt-grammar.y"
3694 {
3695 CHECK_ERROR(((yyvsp[0].num) >= 0), (yylsp[0]), "It cannot be negative");
3696 }
3697 #line 3698 "modules/mqtt/mqtt-grammar.c"
3698 break;
3699
3700 case 51: /* nonnegative_integer: nonnegative_integer64 */
3701 #line 786 "modules/mqtt/mqtt-grammar.y"
3702 {
3703 CHECK_ERROR(((yyvsp[0].num) <= G_MAXINT32), (yylsp[0]), "Must be smaller than 2^31");
3704 }
3705 #line 3706 "modules/mqtt/mqtt-grammar.c"
3706 break;
3707
3708 case 52: /* positive_integer64: LL_NUMBER */
3709 #line 793 "modules/mqtt/mqtt-grammar.y"
3710 {
3711 CHECK_ERROR(((yyvsp[0].num) > 0), (yylsp[0]), "Must be positive");
3712 }
3713 #line 3714 "modules/mqtt/mqtt-grammar.c"
3714 break;
3715
3716 case 53: /* positive_integer: positive_integer64 */
3717 #line 800 "modules/mqtt/mqtt-grammar.y"
3718 {
3719 CHECK_ERROR(((yyvsp[0].num) <= G_MAXINT32), (yylsp[0]), "Must be smaller than 2^31");
3720 }
3721 #line 3722 "modules/mqtt/mqtt-grammar.c"
3722 break;
3723
3724 case 54: /* path: string */
3725 #line 835 "modules/mqtt/mqtt-grammar.y"
3726 {
3727 struct stat buffer;
3728 int ret = stat((yyvsp[0].cptr), &buffer);
3729 CHECK_ERROR((ret == 0), (yylsp[0]), "File \"%s\" not found: %s", (yyvsp[0].cptr), strerror(errno));
3730 (yyval.cptr) = (yyvsp[0].cptr);
3731 }
3732 #line 3733 "modules/mqtt/mqtt-grammar.c"
3733 break;
3734
3735 case 55: /* path_check: path */
3736 #line 844 "modules/mqtt/mqtt-grammar.y"
3737 { cfg_path_track_file(configuration, (yyvsp[0].cptr), "path_check"); }
3738 #line 3739 "modules/mqtt/mqtt-grammar.c"
3739 break;
3740
3741 case 56: /* path_secret: path */
3742 #line 848 "modules/mqtt/mqtt-grammar.y"
3743 { cfg_path_track_file(configuration, (yyvsp[0].cptr), "path_secret"); }
3744 #line 3745 "modules/mqtt/mqtt-grammar.c"
3745 break;
3746
3747 case 57: /* string_list: string_list_build */
3748 #line 860 "modules/mqtt/mqtt-grammar.y"
3749 { (yyval.ptr) = (yyvsp[0].ptr); }
3750 #line 3751 "modules/mqtt/mqtt-grammar.c"
3751 break;
3752
3753 case 58: /* string_list_build: string string_list_build */
3754 #line 864 "modules/mqtt/mqtt-grammar.y"
3755 { (yyval.ptr) = g_list_prepend((yyvsp[0].ptr), g_strdup((yyvsp[-1].cptr))); free((yyvsp[-1].cptr)); }
3756 #line 3757 "modules/mqtt/mqtt-grammar.c"
3757 break;
3758
3759 case 59: /* string_list_build: %empty */
3760 #line 865 "modules/mqtt/mqtt-grammar.y"
3761 { (yyval.ptr) = NULL; }
3762 #line 3763 "modules/mqtt/mqtt-grammar.c"
3763 break;
3764
3765 case 60: /* severity_string: string */
3766 #line 875 "modules/mqtt/mqtt-grammar.y"
3767 {
3768 /* return the numeric value of the "level" */
3769 int n = syslog_name_lookup_severity_by_name((yyvsp[0].cptr));
3770 CHECK_ERROR((n != -1), (yylsp[0]), "Unknown priority level\"%s\"", (yyvsp[0].cptr));
3771 free((yyvsp[0].cptr));
3772 (yyval.num) = n;
3773 }
3774 #line 3775 "modules/mqtt/mqtt-grammar.c"
3775 break;
3776
3777 case 61: /* facility_string: string */
3778 #line 886 "modules/mqtt/mqtt-grammar.y"
3779 {
3780 /* return the numeric value of facility */
3781 int n = syslog_name_lookup_facility_by_name((yyvsp[0].cptr));
3782 CHECK_ERROR((n != -1), (yylsp[0]), "Unknown facility \"%s\"", (yyvsp[0].cptr));
3783 free((yyvsp[0].cptr));
3784 (yyval.num) = n;
3785 }
3786 #line 3787 "modules/mqtt/mqtt-grammar.c"
3787 break;
3788
3789 case 62: /* facility_string: KW_SYSLOG */
3790 #line 893 "modules/mqtt/mqtt-grammar.y"
3791 { (yyval.num) = LOG_SYSLOG; }
3792 #line 3793 "modules/mqtt/mqtt-grammar.c"
3793 break;
3794
3795 case 63: /* driver_option: KW_PERSIST_NAME '(' string ')' */
3796 #line 909 "modules/mqtt/mqtt-grammar.y"
3797 { log_pipe_set_persist_name(&last_driver->super, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3798 #line 3799 "modules/mqtt/mqtt-grammar.c"
3799 break;
3800
3801 case 64: /* inner_source: LL_IDENTIFIER */
3802 #line 914 "modules/mqtt/mqtt-grammar.y"
3803 {
3804 Plugin *p;
3805 gint context = LL_CONTEXT_INNER_SRC;
3806 gpointer value;
3807
3808 p = cfg_find_plugin(configuration, context, (yyvsp[0].cptr));
3809 CHECK_ERROR(p, (yylsp[0]), "%s plugin %s not found", cfg_lexer_lookup_context_name_by_type(context), (yyvsp[0].cptr));
3810
3811 value = cfg_parse_plugin(configuration, p, &(yylsp[0]), last_driver);
3812
3813 free((yyvsp[0].cptr));
3814 if (!value)
3815 {
3816 YYERROR;
3817 }
3818 if (!log_driver_add_plugin(last_driver, (LogDriverPlugin *) value))
3819 {
3820 log_driver_plugin_free(value);
3821 CHECK_ERROR(TRUE, (yylsp[0]), "Error while registering the plugin %s in this destination", (yyvsp[0].cptr));
3822 }
3823 }
3824 #line 3825 "modules/mqtt/mqtt-grammar.c"
3825 break;
3826
3827 case 67: /* inner_dest: LL_IDENTIFIER */
3828 #line 945 "modules/mqtt/mqtt-grammar.y"
3829 {
3830 Plugin *p;
3831 gint context = LL_CONTEXT_INNER_DEST;
3832 gpointer value;
3833
3834 p = cfg_find_plugin(configuration, context, (yyvsp[0].cptr));
3835 CHECK_ERROR(p, (yylsp[0]), "%s plugin %s not found", cfg_lexer_lookup_context_name_by_type(context), (yyvsp[0].cptr));
3836
3837 value = cfg_parse_plugin(configuration, p, &(yylsp[0]), last_driver);
3838
3839 free((yyvsp[0].cptr));
3840 if (!value)
3841 {
3842 YYERROR;
3843 }
3844 if (!log_driver_add_plugin(last_driver, (LogDriverPlugin *) value))
3845 {
3846 log_driver_plugin_free(value);
3847 CHECK_ERROR(TRUE, (yylsp[0]), "Error while registering the plugin %s in this destination", (yyvsp[0].cptr));
3848 }
3849 }
3850 #line 3851 "modules/mqtt/mqtt-grammar.c"
3851 break;
3852
3853 case 68: /* dest_driver_option: KW_LOG_FIFO_SIZE '(' positive_integer ')' */
3854 #line 972 "modules/mqtt/mqtt-grammar.y"
3855 { ((LogDestDriver *) last_driver)->log_fifo_size = (yyvsp[-1].num); }
3856 #line 3857 "modules/mqtt/mqtt-grammar.c"
3857 break;
3858
3859 case 69: /* dest_driver_option: KW_THROTTLE '(' nonnegative_integer ')' */
3860 #line 973 "modules/mqtt/mqtt-grammar.y"
3861 { ((LogDestDriver *) last_driver)->throttle = (yyvsp[-1].num); }
3862 #line 3863 "modules/mqtt/mqtt-grammar.c"
3863 break;
3864
3865 case 72: /* threaded_dest_driver_general_option: KW_RETRIES '(' positive_integer ')' */
3866 #line 990 "modules/mqtt/mqtt-grammar.y"
3867 {
3868 log_threaded_dest_driver_set_max_retries_on_error(last_driver, (yyvsp[-1].num));
3869 }
3870 #line 3871 "modules/mqtt/mqtt-grammar.c"
3871 break;
3872
3873 case 73: /* threaded_dest_driver_general_option: KW_TIME_REOPEN '(' positive_integer ')' */
3874 #line 993 "modules/mqtt/mqtt-grammar.y"
3875 { log_threaded_dest_driver_set_time_reopen(last_driver, (yyvsp[-1].num)); }
3876 #line 3877 "modules/mqtt/mqtt-grammar.c"
3877 break;
3878
3879 case 75: /* threaded_source_driver_option: KW_FORMAT '(' string ')' */
3880 #line 999 "modules/mqtt/mqtt-grammar.y"
3881 { log_threaded_source_driver_get_parse_options(last_driver)->format = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3882 #line 3883 "modules/mqtt/mqtt-grammar.c"
3883 break;
3884
3885 case 77: /* $@10: %empty */
3886 #line 1001 "modules/mqtt/mqtt-grammar.y"
3887 { last_msg_format_options = log_threaded_source_driver_get_parse_options(last_driver); }
3888 #line 3889 "modules/mqtt/mqtt-grammar.c"
3889 break;
3890
3891 case 79: /* $@11: %empty */
3892 #line 1002 "modules/mqtt/mqtt-grammar.y"
3893 { last_source_options = log_threaded_source_driver_get_source_options(last_driver); }
3894 #line 3895 "modules/mqtt/mqtt-grammar.c"
3895 break;
3896
3897 case 82: /* threaded_source_driver_option_flags: string threaded_source_driver_option_flags */
3898 #line 1013 "modules/mqtt/mqtt-grammar.y"
3899 {
3900 CHECK_ERROR(msg_format_options_process_flag(log_threaded_source_driver_get_parse_options(last_driver), (yyvsp[-1].cptr)), (yylsp[-1]), "Unknown flag \"%s\"", (yyvsp[-1].cptr));
3901 free((yyvsp[-1].cptr));
3902 }
3903 #line 3904 "modules/mqtt/mqtt-grammar.c"
3904 break;
3905
3906 case 84: /* source_option: KW_LOG_IW_SIZE '(' positive_integer ')' */
3907 #line 1023 "modules/mqtt/mqtt-grammar.y"
3908 { last_source_options->init_window_size = (yyvsp[-1].num); }
3909 #line 3910 "modules/mqtt/mqtt-grammar.c"
3910 break;
3911
3912 case 85: /* source_option: KW_CHAIN_HOSTNAMES '(' yesno ')' */
3913 #line 1024 "modules/mqtt/mqtt-grammar.y"
3914 { last_source_options->chain_hostnames = (yyvsp[-1].num); }
3915 #line 3916 "modules/mqtt/mqtt-grammar.c"
3916 break;
3917
3918 case 86: /* source_option: KW_KEEP_HOSTNAME '(' yesno ')' */
3919 #line 1025 "modules/mqtt/mqtt-grammar.y"
3920 { last_source_options->keep_hostname = (yyvsp[-1].num); }
3921 #line 3922 "modules/mqtt/mqtt-grammar.c"
3922 break;
3923
3924 case 87: /* source_option: KW_PROGRAM_OVERRIDE '(' string ')' */
3925 #line 1026 "modules/mqtt/mqtt-grammar.y"
3926 { last_source_options->program_override = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3927 #line 3928 "modules/mqtt/mqtt-grammar.c"
3928 break;
3929
3930 case 88: /* source_option: KW_HOST_OVERRIDE '(' string ')' */
3931 #line 1027 "modules/mqtt/mqtt-grammar.y"
3932 { last_source_options->host_override = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3933 #line 3934 "modules/mqtt/mqtt-grammar.c"
3934 break;
3935
3936 case 89: /* source_option: KW_LOG_PREFIX '(' string ')' */
3937 #line 1028 "modules/mqtt/mqtt-grammar.y"
3938 { gchar *p = strrchr((yyvsp[-1].cptr), ':'); if (p) *p = 0; last_source_options->program_override = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3939 #line 3940 "modules/mqtt/mqtt-grammar.c"
3940 break;
3941
3942 case 90: /* source_option: KW_KEEP_TIMESTAMP '(' yesno ')' */
3943 #line 1029 "modules/mqtt/mqtt-grammar.y"
3944 { last_source_options->keep_timestamp = (yyvsp[-1].num); }
3945 #line 3946 "modules/mqtt/mqtt-grammar.c"
3946 break;
3947
3948 case 91: /* source_option: KW_READ_OLD_RECORDS '(' yesno ')' */
3949 #line 1030 "modules/mqtt/mqtt-grammar.y"
3950 { last_source_options->read_old_records = (yyvsp[-1].num); }
3951 #line 3952 "modules/mqtt/mqtt-grammar.c"
3952 break;
3953
3954 case 92: /* source_option: KW_USE_SYSLOGNG_PID '(' yesno ')' */
3955 #line 1031 "modules/mqtt/mqtt-grammar.y"
3956 { last_source_options->use_syslogng_pid = (yyvsp[-1].num); }
3957 #line 3958 "modules/mqtt/mqtt-grammar.c"
3958 break;
3959
3960 case 93: /* source_option: KW_TAGS '(' string_list ')' */
3961 #line 1032 "modules/mqtt/mqtt-grammar.y"
3962 { log_source_options_set_tags(last_source_options, (yyvsp[-1].ptr)); }
3963 #line 3964 "modules/mqtt/mqtt-grammar.c"
3964 break;
3965
3966 case 94: /* $@12: %empty */
3967 #line 1033 "modules/mqtt/mqtt-grammar.y"
3968 { last_host_resolve_options = &last_source_options->host_resolve_options; }
3969 #line 3970 "modules/mqtt/mqtt-grammar.c"
3970 break;
3971
3972 case 96: /* host_resolve_option: KW_USE_FQDN '(' yesno ')' */
3973 #line 1069 "modules/mqtt/mqtt-grammar.y"
3974 { last_host_resolve_options->use_fqdn = (yyvsp[-1].num); }
3975 #line 3976 "modules/mqtt/mqtt-grammar.c"
3976 break;
3977
3978 case 97: /* host_resolve_option: KW_USE_DNS '(' dnsmode ')' */
3979 #line 1070 "modules/mqtt/mqtt-grammar.y"
3980 { last_host_resolve_options->use_dns = (yyvsp[-1].num); }
3981 #line 3982 "modules/mqtt/mqtt-grammar.c"
3982 break;
3983
3984 case 98: /* host_resolve_option: KW_DNS_CACHE '(' yesno ')' */
3985 #line 1071 "modules/mqtt/mqtt-grammar.y"
3986 { last_host_resolve_options->use_dns_cache = (yyvsp[-1].num); }
3987 #line 3988 "modules/mqtt/mqtt-grammar.c"
3988 break;
3989
3990 case 99: /* host_resolve_option: KW_NORMALIZE_HOSTNAMES '(' yesno ')' */
3991 #line 1072 "modules/mqtt/mqtt-grammar.y"
3992 { last_host_resolve_options->normalize_hostnames = (yyvsp[-1].num); }
3993 #line 3994 "modules/mqtt/mqtt-grammar.c"
3994 break;
3995
3996 case 100: /* msg_format_option: KW_TIME_ZONE '(' string ')' */
3997 #line 1076 "modules/mqtt/mqtt-grammar.y"
3998 { last_msg_format_options->recv_time_zone = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3999 #line 4000 "modules/mqtt/mqtt-grammar.c"
4000 break;
4001
4002 case 101: /* msg_format_option: KW_DEFAULT_SEVERITY '(' severity_string ')' */
4003 #line 1078 "modules/mqtt/mqtt-grammar.y"
4004 {
4005 if (last_msg_format_options->default_pri == 0xFFFF)
4006 last_msg_format_options->default_pri = LOG_USER;
4007 last_msg_format_options->default_pri = (last_msg_format_options->default_pri & ~LOG_PRIMASK) | (yyvsp[-1].num);
4008 }
4009 #line 4010 "modules/mqtt/mqtt-grammar.c"
4010 break;
4011
4012 case 102: /* msg_format_option: KW_DEFAULT_FACILITY '(' facility_string ')' */
4013 #line 1084 "modules/mqtt/mqtt-grammar.y"
4014 {
4015 if (last_msg_format_options->default_pri == 0xFFFF)
4016 last_msg_format_options->default_pri = LOG_NOTICE;
4017 last_msg_format_options->default_pri = (last_msg_format_options->default_pri & LOG_PRIMASK) | (yyvsp[-1].num);
4018 }
4019 #line 4020 "modules/mqtt/mqtt-grammar.c"
4020 break;
4021
4022 case 103: /* template_option: KW_TS_FORMAT '(' string ')' */
4023 #line 1146 "modules/mqtt/mqtt-grammar.y"
4024 { last_template_options->ts_format = cfg_ts_format_value((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
4025 #line 4026 "modules/mqtt/mqtt-grammar.c"
4026 break;
4027
4028 case 104: /* template_option: KW_FRAC_DIGITS '(' nonnegative_integer ')' */
4029 #line 1147 "modules/mqtt/mqtt-grammar.y"
4030 { last_template_options->frac_digits = (yyvsp[-1].num); }
4031 #line 4032 "modules/mqtt/mqtt-grammar.c"
4032 break;
4033
4034 case 105: /* template_option: KW_TIME_ZONE '(' string ')' */
4035 #line 1148 "modules/mqtt/mqtt-grammar.y"
4036 { last_template_options->time_zone[LTZ_SEND] = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
4037 #line 4038 "modules/mqtt/mqtt-grammar.c"
4038 break;
4039
4040 case 106: /* template_option: KW_SEND_TIME_ZONE '(' string ')' */
4041 #line 1149 "modules/mqtt/mqtt-grammar.y"
4042 { last_template_options->time_zone[LTZ_SEND] = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
4043 #line 4044 "modules/mqtt/mqtt-grammar.c"
4044 break;
4045
4046 case 107: /* template_option: KW_LOCAL_TIME_ZONE '(' string ')' */
4047 #line 1150 "modules/mqtt/mqtt-grammar.y"
4048 { last_template_options->time_zone[LTZ_LOCAL] = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
4049 #line 4050 "modules/mqtt/mqtt-grammar.c"
4050 break;
4051
4052 case 108: /* template_option: KW_ON_ERROR '(' string ')' */
4053 #line 1152 "modules/mqtt/mqtt-grammar.y"
4054 {
4055 gint on_error;
4056
4057 CHECK_ERROR(log_template_on_error_parse((yyvsp[-1].cptr), &on_error), (yylsp[-1]), "Invalid on-error() setting \"%s\"", (yyvsp[-1].cptr));
4058 free((yyvsp[-1].cptr));
4059
4060 log_template_options_set_on_error(last_template_options, on_error);
4061 }
4062 #line 4063 "modules/mqtt/mqtt-grammar.c"
4063 break;
4064
4065
4066 #line 4067 "modules/mqtt/mqtt-grammar.c"
4067
4068 default: break;
4069 }
4070 /* User semantic actions sometimes alter yychar, and that requires
4071 that yytoken be updated with the new translation. We take the
4072 approach of translating immediately before every use of yytoken.
4073 One alternative is translating here after every semantic action,
4074 but that translation would be missed if the semantic action invokes
4075 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
4076 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
4077 incorrect destructor might then be invoked immediately. In the
4078 case of YYERROR or YYBACKUP, subsequent parser actions might lead
4079 to an incorrect destructor call or verbose syntax error message
4080 before the lookahead is translated. */
4081 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
4082
4083 YYPOPSTACK (yylen);
4084 yylen = 0;
4085
4086 *++yyvsp = yyval;
4087 *++yylsp = yyloc;
4088
4089 /* Now 'shift' the result of the reduction. Determine what state
4090 that goes to, based on the state we popped back to and the rule
4091 number reduced by. */
4092 {
4093 const int yylhs = yyr1[yyn] - YYNTOKENS;
4094 const int yyi = yypgoto[yylhs] + *yyssp;
4095 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
4096 ? yytable[yyi]
4097 : yydefgoto[yylhs]);
4098 }
4099
4100 goto yynewstate;
4101
4102
4103 /*--------------------------------------.
4104 | yyerrlab -- here on detecting error. |
4105 `--------------------------------------*/
4106 yyerrlab:
4107 /* Make sure we have latest lookahead translation. See comments at
4108 user semantic actions for why this is necessary. */
4109 yytoken = yychar == MQTT_EMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
4110 /* If not already recovering from an error, report this error. */
4111 if (!yyerrstatus)
4112 {
4113 ++yynerrs;
4114 {
4115 yypcontext_t yyctx
4116 = {yyssp, yytoken, &yylloc};
4117 char const *yymsgp = YY_("syntax error");
4118 int yysyntax_error_status;
4119 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
4120 if (yysyntax_error_status == 0)
4121 yymsgp = yymsg;
4122 else if (yysyntax_error_status == -1)
4123 {
4124 if (yymsg != yymsgbuf)
4125 YYSTACK_FREE (yymsg);
4126 yymsg = YY_CAST (char *,
4127 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
4128 if (yymsg)
4129 {
4130 yysyntax_error_status
4131 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
4132 yymsgp = yymsg;
4133 }
4134 else
4135 {
4136 yymsg = yymsgbuf;
4137 yymsg_alloc = sizeof yymsgbuf;
4138 yysyntax_error_status = YYENOMEM;
4139 }
4140 }
4141 yyerror (&yylloc, lexer, instance, arg, yymsgp);
4142 if (yysyntax_error_status == YYENOMEM)
4143 YYNOMEM;
4144 }
4145 }
4146
4147 yyerror_range[1] = yylloc;
4148 if (yyerrstatus == 3)
4149 {
4150 /* If just tried and failed to reuse lookahead token after an
4151 error, discard it. */
4152
4153 if (yychar <= MQTT_EOF)
4154 {
4155 /* Return failure if at end of input. */
4156 if (yychar == MQTT_EOF)
4157 YYABORT;
4158 }
4159 else
4160 {
4161 yydestruct ("Error: discarding",
4162 yytoken, &yylval, &yylloc, lexer, instance, arg);
4163 yychar = MQTT_EMPTY;
4164 }
4165 }
4166
4167 /* Else will try to reuse lookahead token after shifting the error
4168 token. */
4169 goto yyerrlab1;
4170
4171
4172 /*---------------------------------------------------.
4173 | yyerrorlab -- error raised explicitly by YYERROR. |
4174 `---------------------------------------------------*/
4175 yyerrorlab:
4176 /* Pacify compilers when the user code never invokes YYERROR and the
4177 label yyerrorlab therefore never appears in user code. */
4178 if (0)
4179 YYERROR;
4180 ++yynerrs;
4181
4182 /* Do not reclaim the symbols of the rule whose action triggered
4183 this YYERROR. */
4184 YYPOPSTACK (yylen);
4185 yylen = 0;
4186 YY_STACK_PRINT (yyss, yyssp);
4187 yystate = *yyssp;
4188 goto yyerrlab1;
4189
4190
4191 /*-------------------------------------------------------------.
4192 | yyerrlab1 -- common code for both syntax error and YYERROR. |
4193 `-------------------------------------------------------------*/
4194 yyerrlab1:
4195 yyerrstatus = 3; /* Each real token shifted decrements this. */
4196
4197 /* Pop stack until we find a state that shifts the error token. */
4198 for (;;)
4199 {
4200 yyn = yypact[yystate];
4201 if (!yypact_value_is_default (yyn))
4202 {
4203 yyn += YYSYMBOL_YYerror;
4204 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
4205 {
4206 yyn = yytable[yyn];
4207 if (0 < yyn)
4208 break;
4209 }
4210 }
4211
4212 /* Pop the current state because it cannot handle the error token. */
4213 if (yyssp == yyss)
4214 YYABORT;
4215
4216 yyerror_range[1] = *yylsp;
4217 yydestruct ("Error: popping",
4218 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, lexer, instance, arg);
4219 YYPOPSTACK (1);
4220 yystate = *yyssp;
4221 YY_STACK_PRINT (yyss, yyssp);
4222 }
4223
4224 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4225 *++yyvsp = yylval;
4226 YY_IGNORE_MAYBE_UNINITIALIZED_END
4227
4228 yyerror_range[2] = yylloc;
4229 ++yylsp;
4230 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
4231
4232 /* Shift the error token. */
4233 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
4234
4235 yystate = yyn;
4236 goto yynewstate;
4237
4238
4239 /*-------------------------------------.
4240 | yyacceptlab -- YYACCEPT comes here. |
4241 `-------------------------------------*/
4242 yyacceptlab:
4243 yyresult = 0;
4244 goto yyreturnlab;
4245
4246
4247 /*-----------------------------------.
4248 | yyabortlab -- YYABORT comes here. |
4249 `-----------------------------------*/
4250 yyabortlab:
4251 yyresult = 1;
4252 goto yyreturnlab;
4253
4254
4255 /*-----------------------------------------------------------.
4256 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
4257 `-----------------------------------------------------------*/
4258 yyexhaustedlab:
4259 yyerror (&yylloc, lexer, instance, arg, YY_("memory exhausted"));
4260 yyresult = 2;
4261 goto yyreturnlab;
4262
4263
4264 /*----------------------------------------------------------.
4265 | yyreturnlab -- parsing is finished, clean up and return. |
4266 `----------------------------------------------------------*/
4267 yyreturnlab:
4268 if (yychar != MQTT_EMPTY)
4269 {
4270 /* Make sure we have latest lookahead translation. See comments at
4271 user semantic actions for why this is necessary. */
4272 yytoken = YYTRANSLATE (yychar);
4273 yydestruct ("Cleanup: discarding lookahead",
4274 yytoken, &yylval, &yylloc, lexer, instance, arg);
4275 }
4276 /* Do not reclaim the symbols of the rule whose action triggered
4277 this YYABORT or YYACCEPT. */
4278 YYPOPSTACK (yylen);
4279 YY_STACK_PRINT (yyss, yyssp);
4280 while (yyssp != yyss)
4281 {
4282 yydestruct ("Cleanup: popping",
4283 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, lexer, instance, arg);
4284 YYPOPSTACK (1);
4285 }
4286 #ifndef yyoverflow
4287 if (yyss != yyssa)
4288 YYSTACK_FREE (yyss);
4289 #endif
4290 if (yymsg != yymsgbuf)
4291 YYSTACK_FREE (yymsg);
4292 return yyresult;
4293 }
4294
4295 #line 1263 "modules/mqtt/mqtt-grammar.y"
4296
4297